Я хотел бы оптимизировать MySQL для одного пользователя (меня). Никто больше не подключен к базе данных. MySQL установлен локально на моем ПК. Данные охватывают около 70 таблиц с общим объемом данных 150 ГБ. Данные статичны, поэтому я не буду вносить в них изменения (без ОБНОВЛЕНИЯ или УДАЛЕНИЯ). Я хочу проанализировать данные, поэтому буду выполнять большие и сложные запросы, включая SELECT и JOIN, для большей части данных.
Машина:
- Windows 7 64-разрядная
- Intel Core i7-4800MQ @ 2,70 ГГц
- 32 ГБ ОЗУ
- 2 твердотельных накопителя по 512 ГБ
- MySQL 5.7, ИННОДБ
Что я сделал на данный момент:
- Деактивированная технология HyperThreading (MySQL использует только одно виртуальное ядро на
запрос — использование ЦП 12,5% --> 25%) - Объявите первичные ключи и
- Проиндексированы все внешние ключи
- innodb_buffer_pool_size = 25G
- макс_подключения = 10
- Использование InnoDB
Итак, что я могу сделать, чтобы оптимизировать конфигурацию (а не сам запрос) для однопользовательских запросов?
- движок базы данных?
- общая конфигурация?
- лучше кэшировать всю информацию о соединениях?
Примечание. В текущей конфигурации узким местом является загрузка ЦП, поскольку при выполнении сложного запроса она составляет 25 %. В качестве теста я попробовал несколько огромных запросов (извлечение большого количества данных). Если я могу поверить, что время работы MYSQL Workbench составляло всего 4 секунды, но после 10 часов работы он не смог завершить получение данных...
Большое спасибо!