Я использую корпоративное приложение на нескольких сайтах, которое требует использования базы данных.Я не разработчик приложения, поэтому я не могу изменить способ, которым приложение запрашивает базу данных.В настоящее время мы пытаемся перейти с MySQL на PostgreSQL, потому что случается так, что приложение лучше работает на PostgreSQL.
Приложение хранит данные по тысячам таблиц в конкретном экземпляре базы данных.Приложение имеет встроенную функцию миграции, которая передает данные от одного поставщика базы данных (например, MySQL) другому.(например, PostgreSQL) В процессе миграции приложения оно выполняет следующие два запроса для каждой таблицы в экземпляре:
SHOW FULL TABLES FROM 'xxx' LIKE 'DATASERIES_yyy'
SELECT COUNT(1) FROM 'DATASERIES_yyy'
Где «xxx» - это экземпляр базы данных, а «yyy» - произвольный, непоследовательное целое число.
Каждый из перечисленных выше запросов выполняется для каждой таблицы 'DATASERIES_yyy' до того, как фактически начнется миграция данных.Процесс выполнения вышеупомянутых двух запросов является для FAR самым большим узким местом в процессе миграции.Из информационной схемы MySQL видно, что выполнение двух вышеупомянутых запросов занимает в среднем 0,25 секунды, и большая часть этого времени уходит на «проверку разрешений».Это верно для мощных серверов или даже для моего скромного рабочего ноутбука.
Я искал в Интернете способы, которые могут улучшить производительность этих двух запросов.Поскольку я не могу изменить способ, которым приложение запрашивает базу данных, я могу сосредоточиться только на самом MySQL.
Вещи, которые я пытался ускорить: 1. Гарантировано, что innodb_stats_on_metadata выключен.2. Установите innodb_read_io_threads = 64. 3. Гарантированное кеширование запросов отключено.4. Удалены все пользователи, кроме 1 имени пользователя, которое приложение использует для входа в базу данных.5. Установите query_cache_type = 0. 6. Установите innodb_io_capacity = 1000. 7. Буферные пулы давно настроены на использование около 70% серверной памяти.
Я не ожидаю никаких чудес, но есть и другие вещиЯ могу попытаться помочь ускорить этот процесс?
Поскольку база данных MySQL будет отброшена после завершения миграции, я могу использовать нетрадиционные параметры просто для ускорения процесса, поэтому не стесняйтесьдать рекомендации, которые будут считаться временными или краткосрочными.(Очевидно, что целостность данных не может быть нарушена.)
Кстати, я знаю, что не могу использовать innodb_read_only, потому что приложение записывает четыре UPDATES в начале процесса и удаляет их в конце, чтобы оно зналопроцесс начался и закончился правильно.
Все эти сайты являются экземплярами MySQL, работающими в средах Windows.Большинство сайтов работают под управлением MySQL версии 5.7.Другие 5,5.
Любое руководство приветствуется.Спасибо!
Редактировать: 1. Полномочия пользователя устанавливаются глобально, а не для таблицы.2. Нет ничего необычного в том, что 10 000 таблиц DATASERIES_yyy.3. Да, подчеркивание в имени таблицы «DATASERIES_yyy».У меня нет контроля над именами таблиц.