Почему импорт файла 12 ГБ. SQL занимает более 36 часов?

dba.stackexchange https://dba.stackexchange.com/questions/1326

  •  16-10-2019
  •  | 
  •  

Вопрос

Я ждал 36 часов, чтобы импортировался файл 12 ГБ .SQL с простым type site.sql | mysql командование Я вижу ibdata1 Растет все еще, в настоящее время почти 40 ГБ.

Учитывая, что триггеры и сохраненные процедуры находятся в конце .SQL, я думаю, что MySQL должен добавлять данные и ключевые индексы.

Site.sql был сгенерирован с использованием этой команды с другого сервера:

mysqldump -R -e --databases site --add-drop-database --add-create-database --add-drop-table -C --single-transaction --triggers

Что займет так долго?

Это было полезно?

Решение

Попробуй это:

$ ps -ef|grep [m]ysql

Определите идентификатор процесса, тогда

$ strace -cp <pid>

Оставить это 10 секунд или минуты тогда ^C. Анкет Это скажет вам, где процесс тратит свое время, например, он может просто ждать диска, если вы увидите read а также write доминировать.

Другие советы

У вас есть таблицы Innodb с первичным ключом

  1. Содержит несколько столбцов?
  2. имея широкий варчар?
  3. И много неаникальных индексов?
  4. Один или несколько индексов, не являющихся юниками, которые имеют широкий ключ?

Любое из этих условий, вероятно, может привести к тому, что большие узлы Btree в ваших индексах имеют очень мало листьев в каждом узле Btree. Ключ кластера в первичной клавише также прикреплен к каждой некноячевой клавиш в некластерированных клавишах.

Другое соображение: значительно ли сумма страниц данных InnoDB значительно меньше, чем страницы индекса InnoDB?

Вы можете узнать это с этим запросом (в MB):

SELECT SUM(data_length)/POWER(1024,2) InnoDBData,
SUM(index_length)/POWER(1024,2) InnoDBIndexes
FROM information_schema.tables WHERE engine='InnoDB';

Дополнительное рассмотрение: у вас есть бинарное ведение журнала на загрузке DB -сервера? Если вы, пожалуйста, сделайте это на загрузке сервера:

mysql -h... -u... -p... -A -e"SET sql_log_bin=0; source site.sql"

Надеюсь, это поможет !!!

Вы уверены, что таблицы, в которых вы читаете, без триггеров, индексов и ограничений? На каком оборудовании и ОС вы работаете? Как настроено ваше хранилище?

Я больше знаком с Oracle, но импортируется 12G на таблицах без триггеров, индексы и ограничения должны легко идти с 200 ГБ/ч. Один триггер может сделать процесс на улитку, в зависимости от того, что делает эти триггеры ...

надеюсь, это поможет

Лицензировано под: CC-BY-SA с атрибуция
Не связан с dba.stackexchange
scroll top