Страница 1 из 2
Как оптимизировать настройку MySQL?
Добавлено: 2008-02-21 22:17:09
gogi
Народ, кто посоветует как и что поменять в настройках Мускла для максимальной производительности? Мускл 5-й, живет под FreeBSD 6.3, машинка выделенная под базу. Машинка двухпроцессорная, мускл скомпилен в thread-варианте. Innodb баз нет и их поддержка не компилилась. Все таблицы в MyISAM. Мозгов на сервере 4 гига.
Буду зело признателен за совет по параметрам для этого случая! Заранее спасибо!
Re: Как оптимизировать настройку MySQL?
Добавлено: 2008-02-22 0:16:52
Alex Keda
а чё - тупит?
если нет - не трожь

=======
ты скажи что сделал - что не устраивает.
а так - на гуще кофейной гадать будем.
в общем случае - отай ему почти всю раму.
Re: Как оптимизировать настройку MySQL?
Добавлено: 2008-03-09 10:25:07
serge
А вот пример когда тупит и прилично:
Код: Выделить всё
PID USERNAME THR PRI NICE SIZE RES STATE TIME WCPU COMMAND
51250 mysql 14 20 0 331M 117M kserel 239:42 26.03% mysqld
И так висит все время, часто загрузка проца поднимаеться выше.
Кол-во запросов в секунду ~10
В phpmyadmin ругань на
Код: Выделить всё
Slow_queries 3,348
Handler_read_rnd 33 M
Handler_read_rnd_next 262 M
Qcache_lowmem_prunes 4,802
Created_tmp_disk_tables 113 k
Select_full_join 1,527
Sort_merge_passes 4,438
Opened_tables 810
Table_locks_waited 115
Баз немного, около 20 штук. Самая большая это dspam. Около 5 млн записей. Запросы к ней иногда выполняються дольше чем положено (Slow_queries).
Есть еще база, запросы к которой используют много раз join. Практически всегда при этом создаеться временная таблица на hdd.
Пытался заставить создавать таблицы в памяти. Ставил
загрузка проца стала 50-60% а в phpmyadmin все таже ругань.
поставил
загрузка проца как показано выше при практически такой же ругани в phpmyadmin
весь конфиг сервера
Код: Выделить всё
skip-locking
key_buffer = 256M
max_allowed_packet = 1M
table_cache = 512
sort_buffer_size = 10M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size= 16M
tmp_table_size = 1M
# Try number of CPU's*2 for thread_concurrency
#thread_concurrency = 2
#log-slow-queries
Код: Выделить всё
pkg_info | grep mysql
mysql-client-5.0.51a Multithreaded SQL database (client)
mysql-server-5.0.51a Multithreaded SQL database (server)
Код: Выделить всё
vi /etc/make.conf
# MySQL
.if ${.CURDIR} == ${PORTSDIR}/databases/mysql50-server
BUILD_OPTIMIZED=yes
BUILD_STATIC=yes
WITH_CHARSET=cp1251
WITH_COLLATION=cp1251_bin
.endif
.if ${.CURDIR} == ${PORTSDIR}/databases/mysql50-client
BUILD_OPTIMIZED=yes
BUILD_STATIC=yes
WITH_CHARSET=cp1251
WITH_COLLATION=cp1251_bin
.endif
Тип таблиц - MyISAM.
В конфиге пробовал играть значениями практически всех параметров, но либо принципиальных изменений небыло, либо я их не заметил.
Я понимаю, что скорее всего проблема в том, что запросы к MySQL неоптимальны. Но запросы изменить я не могу. Что еще можно попробовать чтобы увеличить производительность или снизить использование ресурсов процессора?
Re: Как оптимизировать настройку MySQL?
Добавлено: 2008-03-09 10:48:54
LMik
Хы, так загрузка проца - показатель что все работы в памяти ведутся и мускулу это нравится (с винта гораздо медленнее читать/писать), и он может развернуться нормально и быстро отдавать ответы. Временную таблицу верни в память.
Re: Как оптимизировать настройку MySQL?
Добавлено: 2008-03-09 10:51:16
LMik
в thread-варианте
это что значит?
Re: Как оптимизировать настройку MySQL?
Добавлено: 2008-03-09 10:52:37
LMik
Код: Выделить всё
cat /boot/loader.conf
autoboot_delay="1"
kern.dfldsiz="2764M" # Set the initial data size limit
kern.maxdsiz="2764M" # Set the max data size
kern.maxssiz="128M" # Set the max stack size
Это чтобы мускул смог скушать хотябы 2.5 гига рамы.
Re: Как оптимизировать настройку MySQL?
Добавлено: 2008-03-09 10:53:48
LMik
Код: Выделить всё
skip-locking
key_buffer = 256M
max_allowed_packet = 1M
table_cache = 512
sort_buffer_size = 10M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size= 16M
tmp_table_size = 1M
# Try number of CPU's*2 for thread_concurrency
#thread_concurrency = 2
#log-slow-queries
Давай ему больше буферов, что за мизер такой с таким количеством памяти?
При запросах смотри
, на сколько там винт загружен?
Re: Как оптимизировать настройку MySQL?
Добавлено: 2008-03-09 14:17:40
serge
LMik писал(а):Код: Выделить всё
cat /boot/loader.conf
autoboot_delay="1"
kern.dfldsiz="2764M" # Set the initial data size limit
kern.maxdsiz="2764M" # Set the max data size
kern.maxssiz="128M" # Set the max stack size
Это чтобы мускул смог скушать хотябы 2.5 гига рамы.
Памяти всего 1 гиг

Re: Как оптимизировать настройку MySQL?
Добавлено: 2008-03-09 14:20:48
serge
LMik писал(а):Хы, так загрузка проца - показатель что все работы в памяти ведутся и мускулу это нравится (с винта гораздо медленнее читать/писать), и он может развернуться нормально и быстро отдавать ответы. Временную таблицу верни в память.
Я не против, но нагрузка на БД мизерная (~10 запросов в сек). Наблюдал как работает mysql на нагрузке в несколько раз выше и проц при этом загружал на 2-5%. Вот это и вызывает недоумение.
Тут дело в неоптимальных запросах, имхо. Бороться с источником проблемы возможности нет, вот и пытаюсь как то это сгладить на стороне сервера.
Re: Как оптимизировать настройку MySQL?
Добавлено: 2008-03-09 14:23:37
serge
LMik писал(а):в thread-варианте
это что значит?
Уже думал в эту строну. Теперь точно попробую.
З.Ы. Как это отразиться на производительности с учетом 1 ядра в процессоре? Почему-то мне показалось что это все хорошо для SMP серверов.
Re: Как оптимизировать настройку MySQL?
Добавлено: 2008-03-09 14:43:51
LMik
serge писал(а):LMik писал(а):в thread-варианте
это что значит?
Уже думал в эту строну. Теперь точно попробую.
З.Ы. Как это отразиться на производительности с учетом 1 ядра в процессоре? Почему-то мне показалось что это все хорошо для SMP серверов.
Вобще поставь 7 релиз уже. Там все шустрее работает. Про буферы уже сказал - больше делай, он тормозит именно поэтому.
libthr pthr и прочие либы занимаются распределением нитей процессов по 1+ ядрам.
Re: Как оптимизировать настройку MySQL?
Добавлено: 2008-03-09 18:32:15
serge
LMik писал(а):При запросах смотри Код: Выделить всёsystat -v 1 , на сколько там винт загружен?
От 0 до 5%. Т.е. практически незагружен. Там еще к тому же gmirror стоит.
Re: Как оптимизировать настройку MySQL?
Добавлено: 2008-03-10 13:55:08
ProFTP
а что использует мусю сайт или форум или какая-то программа??
если боты будут что-то вносить то она и будет грузиться или если будет очень много выносить данных...
буфер я так понимаю 64 метра...

Re: Как оптимизировать настройку MySQL?
Добавлено: 2008-03-10 15:30:01
serge
ProFTP писал(а):а что использует мусю сайт или форум или какая-то программа??
если боты будут что-то вносить то она и будет грузиться или если будет очень много выносить данных...
Сайт. Точнее даже mysql обслуживает маленький хостинг.
З.Ы. Чуть позже отпишусь о результатах прошедшей ночи оптимизации. Продвижки есть

Re: Как оптимизировать настройку MySQL?
Добавлено: 2008-03-10 16:39:09
LMik
serge писал(а):ProFTP писал(а):а что использует мусю сайт или форум или какая-то программа??
если боты будут что-то вносить то она и будет грузиться или если будет очень много выносить данных...
Сайт. Точнее даже mysql обслуживает маленький хостинг.
З.Ы. Чуть позже отпишусь о результатах прошедшей ночи оптимизации. Продвижки есть


Буферы буферы, и ещё раз буферы

Re: Как оптимизировать настройку MySQL?
Добавлено: 2008-03-12 2:07:08
voider
Код: Выделить всё
[mysqld]
skip-locking
skip-innodb
query_cache_limit=1M
query_cache_size=32M
query_cache_type=1
max_connections=500
interactive_timeout=100
wait_timeout=100
connect_timeout=10
thread_cache_size=128
key_buffer=16M
join_buffer=1M
max_allowed_packet=16M
table_cache=1024
record_buffer=1M
sort_buffer_size=2M
read_buffer_size=2M
max_connect_errors=10
# Try number of CPU's*2 for thread_concurrency
thread_concurrency=2
myisam_sort_buffer_size=64M
log-bin
server-id=1
[safe_mysqld]
err-log=/var/log/mysqld.log
open_files_limit=8192
[mysqldump]
quick
max_allowed_packet=16M
[mysql]
no-auto-rehash
#safe-updates
[isamchk]
key_buffer=64M
sort_buffer=64M
read_buffer=16M
write_buffer=16M
[myisamchk]
key_buffer=64M
sort_buffer=64M
read_buffer=16M
write_buffer=16M
[mysqlhotcopy]
interactive-timeout
это пойдет для 2 - и больше памяти
Re: Как оптимизировать настройку MySQL?
Добавлено: 2008-03-12 2:11:39
voider
Код: Выделить всё
# Try number of CPU's*2 for thread_concurrency =2*2
thread_concurrency = 4
так как утебя машина двухпроцесорная ставь 4 цифру
Re: Как оптимизировать настройку MySQL?
Добавлено: 2008-03-16 12:02:32
Gloft
Re: Как оптимизировать настройку MySQL?
Добавлено: 2008-03-16 20:25:48
serge
Ага, читал. Много инета потратил на оптимизацию

Но, имхо, четкой инструкции нету получаеться, или не выкладывает ее никто. Пришлось самому анализировать собранный материал и методом проб и ошибок менять параметры сервера.
З.Ы. Чето никак сам не отпишусь о проделанной работе

Re: Как оптимизировать настройку MySQL?
Добавлено: 2008-03-17 14:37:24
Morty
а в чём разница
и так
я по последней собирал
Re: Как оптимизировать настройку MySQL?
Добавлено: 2008-03-17 19:14:35
LMik
Morty писал(а):а в чём разница
и так
я по последней собирал
Это разные либы поточности.
Re: Как оптимизировать настройку MySQL?
Добавлено: 2008-03-17 22:29:05
dikens3
LMik писал(а):Это разные либы поточности.
И какая из них точнее?
Re: Как оптимизировать настройку MySQL?
Добавлено: 2008-03-17 22:35:20
LMik
dikens3 писал(а):LMik писал(а):Это разные либы поточности.
И какая из них точнее?
от слова поток.
Re: Как оптимизировать настройку MySQL?
Добавлено: 2008-03-18 0:46:01
Alex Keda
Re: Как оптимизировать настройку MySQL?
Добавлено: 2008-03-18 0:46:56
Alex Keda
LMik писал(а):dikens3 писал(а):LMik писал(а):Это разные либы поточности.
И какая из них точнее?
от слова поток.
AC/DC?
Вольтаж?

)