МОЯ НАСТРОЙКА ( пример )
Я использую Linux на экземпляре Amazon High CPU Extra Large EC2 со следующими характеристиками:
- 7 ГБ памяти
- 20 вычислительных блоков EC2 (8 виртуальных ядер по 2,5 вычислительных блока EC2 каждое)
- 1690 ГБ локального хранилища экземпляров
- 64-битная платформа
У меня есть две большие базы данных MySQL, работающие на движке хранения MyISAM. Один 2 ГБ, а другой 500 МБ. Я хотел бы убедиться, что MySQL использует столько оперативной памяти, сколько может / нужно для максимизации скорости запросов. Я знаю , что есть куча MySQL опций конфигурации памяти , как key_buffer_size
и , MyISAM_sort_buffer_size,
но я не знаком с оптимизацией их.
ВОПРОСОВ
- Как проверить, какая память MySQL в настоящее время используется в системе Linux?
- Как максимизировать / оптимизировать использование памяти MySQL?
- Предполагая, что мои запросы и схема оптимизированы, какие еще изменения я должен рассмотреть?
Ответы:
Это сложная тема. Здесь нельзя ответить, об этом написаны целые книги . Я рекомендую сделать ваш innodb_buffer_pool_size достаточно большим. Если вы используете таблицы myisam, то проверьте key_buffer_size. Также необходимо учитывать table_cache и max_connections.
Вот что может вам помочь:
http://www.mysqlperformanceblog.com/2006/09/29/what-to-tune-in-mysql-server-after-installation/ http://www.mysqlperformanceblog.com/2007/11/01/innodb- основы оптимизации производительности / http://www.mysqlperformanceblog.com/2007/11/03/choosing-innodb_buffer_pool_size/
РЕДАКТИРОВАТЬ:
Как сказал @ drew010, важно рассмотреть тип использования БД. Настройка для тяжелой базы данных чтения сильно отличается от тяжелой записи. Также вы можете рассмотреть другие стратегии. Как Memcached, базы данных nosql и т. Д.
источник
Если вам нужно быть уверенным, что MySQL использует всю необходимую память, вам нужно переключиться на InnoDB. Если вы не используете
FULLTEXT
поисковые возможности MySQL , серьезных проблем не будет.В случае MyISAM используется несколько кешей, включая внутренние буферы ключей MySQL и системный кеш. Если вам нужна лучшая производительность, вам нужно оставить место для любого из кэшей, но все же я не рекомендую MyISAM для этой цели, особенно если ваши базы данных требуют много записи: MyISAM блокирует всю таблицу при записи, тогда как InnoDB блокирует только затронутые строки.
Даже если вы поместите все свои базы данных в память, у вас могут возникнуть медленные запросы из-за недостаточного количества индексов или по другим причинам.
источник