2017-02-20 12 views
1

У меня есть экземпляр mysql (Percona) 5.7 с более чем 1 миллионом таблиц. Когда я запускаю базу данных, это может занять больше часа. Errorlog ничего не показывает, но когда я трассирую mysqld_safe, я обнаружил, что MySQL получает стат в каждом файле в БД.MySQL может занять более часа, чтобы начать

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

Благодаря

+0

Вау, это много столов. С другой стороны, этот вопрос может быть более уместным в http://dba.stackexchange.com/ –

+1

1 миллион таблиц? Получите новый черный ящик. – JNevill

+0

отличный дизайн базы данных - 1 миллион стола * 3 ручки для 1 таблицы InnoDB = 3 миллиона файлов. –

ответ

1

Это оказалось 2 номера (кроме миллионов таблиц)!

  1. Когда MySQL запускается, и требуется восстановление после сбоя, начиная с 5.7.17, ему необходимо пройти через ваш datadir для создания его словаря. Это будет снято в будущих выпусках (8.0), так как MySQL будет иметь собственный каталог и больше не будет полагаться на содержимое datadir. Doc утверждает, что этого больше не делается. Это правда и ложь. Он не читает 1-ю страницу файлов ibd, но делает файл stat. Filed Bug
  2. После завершения (1) он запускает новый процесс: «Выполнение« SELECT * FROM INFORMATION_SCHEMA.TABLES; » для получения списка таблиц с использованием устаревшего механизма разделов. ". Это, конечно, снова откроет все файлы. Используйте disable-partition-engine-check, если вы считаете, что вам это не нужно. Doc

Все это можно наблюдать с помощью sysdig. очень мощный удобный инструмент, похожий на инструмент.

sysdig proc.name = mysqld | grep "open fd ="

Итак, пришло время сократить количество файлов.

 Смежные вопросы

  • Нет связанных вопросов^_^