Оптимизация конфигурации MySQL для одного пользователя со сложными запросами

Я хотел бы оптимизировать 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 часов работы он не смог завершить получение данных...

Большое спасибо!


person Uli    schedule 12.02.2017    source источник
comment
проиндексированы все первичные . . . ключи. Звучит неправильно. Первичные ключи автоматически получают свой собственный индекс, просто объявляя их.   -  person Gordon Linoff    schedule 12.02.2017
comment
@GordonLinoff Да, ты прав, это то, что я имел в виду. Извините за неточность. Я изменю это.   -  person Uli    schedule 12.02.2017


Ответы (1)


Вы можете попробовать MySiam. Это особенно хорошо для таблиц с интенсивным чтением (выбор). И вы должны выбрать большой key_buffer_size. Но я не уверен в производительности JOIN... Попробуйте

person Olaf_SQL    schedule 12.02.2017
comment
Хм, я преобразовал все в ENGINE=MyISAM и провел небольшой тест. У меня был запрос SELECT с 8 JOINS. С INNODB это заняло около 20 минут, а с MyISAM в 6 раз дольше. Так что это, вероятно, не решение. Я делаю что-то не так? - person Uli; 13.02.2017