Показать статистику
0 голосов
от (4.6тыс. баллов)
Есть небольшой веб проект, на котором пока нагрузки практически нет. В будущем планируется приток трафика. Тематика сайта - новостной портал (если это имеет значение). Хотелось бы выполнить базовую оптимизацию MySQL, что бы не сидеть на дефолтном конфиге. Есть мнения как это сделать?
235 просмотров 1 ответов

1 Ответ

0 голосов
от (17.4тыс. баллов)

Есть масса рекомендаций по настройке MySQL. Не хочу ссылаться на документацию и тому подобное - вы всегда можете погуглить и найти это все. Но раз уж вы задали вопрос, то поделюсь личным опытом: для базовой быстрой настройки я лично использую mysqltuner. Это скрипт на Perl, который можно скачать здесь: https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl 

Единственный "опасный" момент - скрипт потребует рут доступ к базе. На всякий случай, сделайте дамп перед тем как продолжать.

Если дамп сделан и данные забекаплены, приступаем.

Скачайте файл и сохраните его где нибудь, например у себя в /home

wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl

Сделайте его исполняемым:

chmod +x mysqltuner.pl

И запускаем:

./mysqltuner.pl

[OK] Logged in using credentials from debian maintenance account.
[OK] Currently running supported MySQL version 5.5.34-0ubuntu0.12.04.1
[OK] Operating on 64-bit architecture

-------- Storage Engine Statistics ---------------------------------

[--] Status: +ARCHIVE +BLACKHOLE +CSV -FEDERATED +InnoDB +MRG_MYISAM
[--] Data in MyISAM tables: 123M (Tables: 12)
[--] Data in InnoDB tables: 592M (Tables: 4)
[--] Data in PERFORMANCE_SCHEMA tables: 0B (Tables: 17)
[--] Data in MEMORY tables: 3M (Tables: 3)
[--] Data in BLACKHOLE tables: 0B (Tables: 1)
[!!] Total fragmented tables: 5

-------- Security Recommendations  ---------------------------------

[OK] All database users have passwords assigned

-------- Performance Metrics ---------------------------------------

[--] Up for: 8d 13h 53m 41s (89M q [120.857 qps], 11K conn, TX: 537B, RX: 287B)
[--] Reads / Writes: 29% / 71%
[--] Total buffers: 192.0M global + 2.7M per thread (151 max threads)
[OK] Maximum possible memory usage: 597.8M (3% of installed RAM)
[OK] Slow queries: 0% (1/89M)
[OK] Highest usage of available connections: 29% (45/151)
[OK] Key buffer size / total MyISAM indexes: 16.0M/429.0K
[OK] Key buffer hit rate: 100.0% (164M cached / 124 reads)
[OK] Query cache efficiency: 36.8% (8M cached / 22M selects)
[OK] Query cache prunes per day: 0
[OK] Sorts requiring temporary tables: 0% (0 temp sorts / 129 sorts)
[OK] Temporary tables created on disk: 5% (366 on disk / 6K total)
[OK] Thread cache hit rate: 98% (134 created / 11K connections)
[OK] Table cache hit rate: 30% (100 open / 332 opened)
[OK] Open file limit used: 0% (90/20K)
[OK] Table locks acquired immediately: 99% (46M immediate / 46M locks)
[!!] InnoDB  buffer pool / data size: 128.0M/592.5M
[OK] InnoDB log waits: 0

-------- Recommendations -------------------------------------------

General recommendations:

    Run OPTIMIZE TABLE to defragment tables for better performance
    Enable the slow query log to troubleshoot bad queries

Variables to adjust:

    innodb_buffer_pool_size (>= 592M)

Из полученных данных делаем вывод по изменению параметров и выполняем оптимизацию работу СУБД MySQL (если это требуется). Кроме этого получаем много полезной информации по работе БД (например, размер данных в БД, время беспрерывной работы, количество и интенсивность запросов, и т.д.).

Важное замечание по работе с mysqltuner. Анализ необходимо производить после некоторого беспрерывного периода работы БД. Например, 24 часа, а лучше несколько дней. В таком случае скрипт даст более точную и полезную информацию.

Не стоит забывать, что полученные в результате работы скрипта данные не всегда укажут на узкое место. Для общего анализа работы их может быть достаточно. Но для более тонкой настройки MySQL под определенные задачи может потребоваться более детальный анализ и тестирование.

...