|
|
|
Как скопировать данные из таблицы без лока?
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Есть таблица InnoDB и мне сделать ее копию ( не важно, будут ли скопированы индексы или нет ). Попробовал так - Код: plsql 1. 2. 3. Все копируется как мне надо, но на время выполнения команды все апдейты таблицы `original_table_name` не выполняются, а стоят в очереди. Я так понимаю, что таблица залочилась для записи? Как этого избежать? Как скопировать данные не блокируя исходную таблицу? Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 13:54 |
|
||
|
Как скопировать данные из таблицы без лока?
|
|||
|---|---|---|---|
|
#18+
MNAndreww, А зачем вы трогаете TRANSACTION ISOLATION LEVEL ? Без этого пробовали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 14:30 |
|
||
|
Как скопировать данные из таблицы без лока?
|
|||
|---|---|---|---|
|
#18+
miksoftА зачем вы трогаете TRANSACTION ISOLATION LEVEL ? Вот в этом треде ( http://stackoverflow.com/questions/917640/any-way-to-select-without-causing-locking-in-mysql ) я прочитал, что это поможет избавиться от лока. miksoftБез этого пробовали? Да. Лочит. Вот кусочек отсюда ( http://dev.mysql.com/doc/refman/5.7/en/table-locking.html ) - A SELECT statement that takes a long time to run prevents other sessions from updating the table in the meantime, making the other sessions appear slow or unresponsive. While a session is waiting to get exclusive access to the table for updates, other sessions that issue SELECT statements will queue up behind it, reducing concurrency even for read-only sessions. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 15:56 |
|
||
|
Как скопировать данные из таблицы без лока?
|
|||
|---|---|---|---|
|
#18+
Копировать, не блокируя, не получится. А вот минимизировать описанные потери можно, выполняя сперва чистое копирование структуры, а затем блочное (скажем, по диапазону первичного ключа) копирование данных пачкой запросов (между которыми отработают запросы других клиентов) в эту структуру. Ну а потенциальное рассогласование - за свой счёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 16:56 |
|
||
|
Как скопировать данные из таблицы без лока?
|
|||
|---|---|---|---|
|
#18+
Об InnoDB вроде бы говорилось, что это версионный движок, так что читатели не должны бы ничего блокировать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 20:37 |
|
||
|
Как скопировать данные из таблицы без лока?
|
|||
|---|---|---|---|
|
#18+
AkinaКопировать, не блокируя, не получится. А вот минимизировать описанные потери можно, выполняя сперва чистое копирование структуры, а затем блочное (скажем, по диапазону первичного ключа) копирование данных пачкой запросов (между которыми отработают запросы других клиентов) в эту структуру. Ну а потенциальное рассогласование - за свой счёт. Akina, а можно это делать через курсор, делая while и вставляя например по тысяче строк за раз? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2016, 08:15 |
|
||
|
Как скопировать данные из таблицы без лока?
|
|||
|---|---|---|---|
|
#18+
авторЕсть таблица InnoDB и мне сделать ее копиюа смысл какой вкладывается в "сделать копию". Физически это зачем надо делать? Может просто репликацию настроить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2016, 13:28 |
|
||
|
Как скопировать данные из таблицы без лока?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovОб InnoDB вроде бы говорилось, что это версионный движок, так что читатели не должны бы ничего блокировать... У меня блокируют. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2016, 10:56 |
|
||
|
Как скопировать данные из таблицы без лока?
|
|||
|---|---|---|---|
|
#18+
MNAndrewwmiksoftА зачем вы трогаете TRANSACTION ISOLATION LEVEL ? Вот в этом треде ( http://stackoverflow.com/questions/917640/any-way-to-select-without-causing-locking-in-mysql ) я прочитал, что это поможет избавиться от лока. miksoftБез этого пробовали? Да. Лочит. Вот кусочек отсюда ( http://dev.mysql.com/doc/refman/5.7/en/table-locking.html ) - A SELECT statement that takes a long time to run prevents other sessions from updating the table in the meantime, making the other sessions appear slow or unresponsive. While a session is waiting to get exclusive access to the table for updates, other sessions that issue SELECT statements will queue up behind it, reducing concurrency even for read-only sessions. When choosing whether to create a table using InnoDB or a different storage engine, keep in mind the following disadvantages of table locking: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2016, 15:14 |
|
||
|
Как скопировать данные из таблицы без лока?
|
|||
|---|---|---|---|
|
#18+
авторWhen choosing whether to create a table using InnoDB or a different storage engine, keep in mind the following disadvantages of table locking: .................... A SELECT statement that takes a long time to run prevents other sessions from updating the table in the meantime, making the other sessions appear slow or unresponsive. While a session is waiting to get exclusive access to the table for updates, other sessions that issue SELECT statements will queue up behind it, reducing concurrency even for read-only sessions. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2016, 15:14 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=111&tid=1832150]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
64ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 243ms |
| total: | 429ms |

| 0 / 0 |
