|
|
|
MySQLdump медленное восстановление одной конкретной таблицы, остальные-быстро
|
|||
|---|---|---|---|
|
#18+
Есть восьмигиговый дамп базы. Код: sql 1. Дополнительно перед заливкой делаю Код: sql 1. Заливка начинается резво, за первый час заливается порядка 10Г, а затем на одной и той же таблице процесс залипает. Причем в процессах видно, что вставка идет, данные в инсерте меняются, дата изменения файла ibdata1 меняется каждую минуту. А на деле файл растет очень медленно, несколько килобайт в час. За ночь файл вырос на 1,5г, и процесс продолжается уже почти сутки. Хотя аналогичные дампы с других баз (с такой же структурой, хотя могут быть и изменения) с таким размером дампа на этом же стенде заливались за 2-3 часа. Триггеры на инсерт в таблице есть, но в дампе, как и положено, они заводятся только после заливки данных. В чем могут быть грабли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2013, 16:07:38 |
|
||
|
MySQLdump медленное восстановление одной конкретной таблицы, остальные-быстро
|
|||
|---|---|---|---|
|
#18+
А FK и индексы на таблице есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2013, 16:12:28 |
|
||
|
MySQLdump медленное восстановление одной конкретной таблицы, остальные-быстро
|
|||
|---|---|---|---|
|
#18+
При заливки в пустую базу только этой одной таблицы та же картина. Вот начало дампа: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. т.е. внешние ключи есть, но оно отключены на момент заливки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2013, 16:35:27 |
|
||
|
MySQLdump медленное восстановление одной конкретной таблицы, остальные-быстро
|
|||
|---|---|---|---|
|
#18+
Aliced, а autocommit=0; зачем? убрать/переключить пробовали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2013, 16:40:15 |
|
||
|
MySQLdump медленное восстановление одной конкретной таблицы, остальные-быстро
|
|||
|---|---|---|---|
|
#18+
Сравнение дампа этой таблицы, сделанного из другой базы (которая заливалась быстро), дало отличие Код: sql 1. AUTO_INCREMENT=24605683-может дать такие тормоза? Код: sql 1. Сейчас попробую убрать, но обычно эта опция значительно ускоряет процесс заливки, а не наоборот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2013, 17:01:36 |
|
||
|
MySQLdump медленное восстановление одной конкретной таблицы, остальные-быстро
|
|||
|---|---|---|---|
|
#18+
AlicedAUTO_INCREMENT=24605683-может дать такие тормоза? Нет. Это значение вообще не учитывается при заливке данных. К тому же int(11) - максимально 2147483647, на 2 порядка больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2013, 17:44:33 |
|
||
|
MySQLdump медленное восстановление одной конкретной таблицы, остальные-быстро
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. индекс уникален изначально (содержит уникальный `id`), зачем тормозить вставку лишней проверкой уникальности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2013, 17:59:33 |
|
||
|
MySQLdump медленное восстановление одной конкретной таблицы, остальные-быстро
|
|||
|---|---|---|---|
|
#18+
Cygapb-007, К сожалению, структуру базы разрабатывала не я, и почему ключи описаны именно так, не скажу. Для отключения проверки ключей (и ускорения, т.о.) используется Код: sql 1. , смотрите самую первую строку дампа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2013, 18:39:23 |
|
||
|
MySQLdump медленное восстановление одной конкретной таблицы, остальные-быстро
|
|||
|---|---|---|---|
|
#18+
Aliced, а вот этот дамп, он у вас в граните отлит или пересоздать его можно? если попробовать создать и залить его без поля comment, быстрее не будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 06:56:01 |
|
||
|
MySQLdump медленное восстановление одной конкретной таблицы, остальные-быстро
|
|||
|---|---|---|---|
|
#18+
убрала строчку с Код: sql 1. не помогло. Убрала строчку Код: sql 1. прямо из create table. Тоже не помогло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 15:33:30 |
|
||
|
MySQLdump медленное восстановление одной конкретной таблицы, остальные-быстро
|
|||
|---|---|---|---|
|
#18+
tanglirAliced, а вот этот дамп, он у вас в граните отлит или пересоздать его можно? если попробовать создать и залить его без поля comment, быстрее не будет? Да нет, можно сколько угодно, вот только что-то я не могу придумать, как мне дамп без одного столбца сделать, кроме как создать еще одну таблицу, только без этого столбца, скопировать туда данные и потом сделать дамп этой таблицы. Есть вариант попроще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 15:35:31 |
|
||
|
MySQLdump медленное восстановление одной конкретной таблицы, остальные-быстро
|
|||
|---|---|---|---|
|
#18+
Удаление из таблицы текстового поля тоже не помогло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 18:36:07 |
|
||
|
MySQLdump медленное восстановление одной конкретной таблицы, остальные-быстро
|
|||
|---|---|---|---|
|
#18+
Убрала из запроса create table.. все ключи, кроме первичного. Помогло! Какие есть варианты быстрой заливки таблицы (более 3млн строк) с кучей индексов? Создавать таблицу без индексов, заливать данные, а потом добавлять индексы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 18:52:43 |
|
||
|
MySQLdump медленное восстановление одной конкретной таблицы, остальные-быстро
|
|||
|---|---|---|---|
|
#18+
AlicedСоздавать таблицу без индексов, заливать данные, а потом добавлять индексы?Это как бы best practice. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 19:04:41 |
|
||
|
MySQLdump медленное восстановление одной конкретной таблицы, остальные-быстро
|
|||
|---|---|---|---|
|
#18+
Этот best practice в mysqldump как-то реализован? --disable-keys для InnoDB не работает ведь. А вручную править описания 500 таблиц... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2013, 01:13:06 |
|
||
|
MySQLdump медленное восстановление одной конкретной таблицы, остальные-быстро
|
|||
|---|---|---|---|
|
#18+
Все равно плохо получается. Создаю таблицу, где есть только primary и foreign ключи, заливаю данные, включаю триггеры, (на все про все меньше 40минут) и выполяю Код: sql 1. 2. 3. 4. 5. 6. В общем, 12 часов уже индексируется. Если делать не одним оператором, а несколькими, должно получаться еще больше (для создания каждого индекса таблица копируется заново). Как процесс ускорить? В параллели запустить не получится, таблица при индекации лочится. Перевести в MyIsam, проиндексировать и вернуть в InnoDB? Будет ли быстрее? Тут еще есть вроде InnoDB-plugin, но у меня версия БД 5.1.6, а тут вроде другая версия выходит, и неизвестно, как местный софт на ней будет работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2013, 11:25:35 |
|
||
|
MySQLdump медленное восстановление одной конкретной таблицы, остальные-быстро
|
|||
|---|---|---|---|
|
#18+
Aliced, Предлагаю попробовать следуюшее: 1. содать таблицу ВООБШЕ без ключей и залить туда данные. 1.5 как нибудь убедится что данные чистые и не заглючат на создание инукальных и форенд ключей 2. СОдать все нужные ключи потом, включая примари и форенд. 3. раобратся с индексами и убрать ненужные. например если есть индекс (А,Б,Ц), то индекс (А, Б) скорее всего не нужем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2013, 20:46:21 |
|
||
|
MySQLdump медленное восстановление одной конкретной таблицы, остальные-быстро
|
|||
|---|---|---|---|
|
#18+
Что показывает SHOW FULL PROCESSLIST во время создания индексов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2013, 15:07:37 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38407608&tid=1835942]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 380ms |

| 0 / 0 |
