Привет.
Возникла такая ситуация:
- имеется сервер с 4 гигами ОЗУ.
- в какойто момент возникает сверх нагрзка (тучи пользователей), апачами съедается вся оперативка, сервер влезает в swap, всё жутко тормозит и все пользователи скорбят о кончине.
- в логах mysql видно что абсолютно все запросы становятся сверх медленными (до 1000 секунд выполняются), в основном в моммент этой нагрузки используются 2 таблицы, на которые резко возростает кол-во UPDATE, SELECT и INSERT запросов. Так же в логах видно что каждый запрос блокирует таблицу на 30-100 секунд.вобщем нехватка памяти + очередь в 1000 запросов из-за блокировки таблицы.
Как я хочу решить проблему:
- новый сервер с 8 гигами оперативки.
- установка nginx, для экономии памяти.
- конвертация тех таблиц в innoDB, чтобы исключить блокировку всей таблицы.В связи с чем у меня вопросы:
1. нормальна ли ситуация когда в одной БД, некоторые таблицы в MyISAM а некоторые в innoDB?
2. нужно ли чтото менять в запросах, скриптах, после изменения таблиц на innoDB?
3. можете посоветовать настройки innoDB, чтобы она эффективно использовала ОЗУ (например полностью помещала таблицу в ОЗУ)?
>[оверквотинг удален]
> - новый сервер с 8 гигами оперативки.
> - установка nginx, для экономии памяти.
> - конвертация тех таблиц в innoDB, чтобы исключить блокировку всей таблицы.
> В связи с чем у меня вопросы:
> 1. нормальна ли ситуация когда в одной БД, некоторые таблицы в MyISAM
> а некоторые в innoDB?
> 2. нужно ли чтото менять в запросах, скриптах, после изменения таблиц на
> innoDB?
> 3. можете посоветовать настройки innoDB, чтобы она эффективно использовала ОЗУ (например
> полностью помещала таблицу в ОЗУ)?RFTM High performance mysql, mysql performance blog
в двух словах содержимое целой книги вам никто не перескажет
>[оверквотинг удален]
>> - конвертация тех таблиц в innoDB, чтобы исключить блокировку всей таблицы.
>> В связи с чем у меня вопросы:
>> 1. нормальна ли ситуация когда в одной БД, некоторые таблицы в MyISAM
>> а некоторые в innoDB?
>> 2. нужно ли чтото менять в запросах, скриптах, после изменения таблиц на
>> innoDB?
>> 3. можете посоветовать настройки innoDB, чтобы она эффективно использовала ОЗУ (например
>> полностью помещала таблицу в ОЗУ)?
> RFTM High performance mysql, mysql performance blog
> в двух словах содержимое целой книги вам никто не перескажетну я вообщето и не просил что то мне рассказывать ... я по моему конкретные вопросы задал, 3 шт. ...
>[оверквотинг удален]
>>> 1. нормальна ли ситуация когда в одной БД, некоторые таблицы в MyISAM
>>> а некоторые в innoDB?
>>> 2. нужно ли чтото менять в запросах, скриптах, после изменения таблиц на
>>> innoDB?
>>> 3. можете посоветовать настройки innoDB, чтобы она эффективно использовала ОЗУ (например
>>> полностью помещала таблицу в ОЗУ)?
>> RFTM High performance mysql, mysql performance blog
>> в двух словах содержимое целой книги вам никто не перескажет
> ну я вообщето и не просил что то мне рассказывать ... я
> по моему конкретные вопросы задал, 3 шт. ...в общем-то вам на них так же конкрентно ответили. см пост #4
сначала установи nginx, а уже потом смотри, стоит ли тебе что-то оптимизировать или нет.Вообще, если движок чужой - то ну нафиг в него лезть. ИЛи - делать его "своим, родным, близким"
>В связи с чем у меня вопросы:
>1. нормальна ли ситуация когда в одной БД, некоторые таблицы в MyISAM а некоторые в innoDB?сойдет
>2. нужно ли чтото менять в запросах, скриптах, после изменения таблиц на innoDB?
в общем случае нет, но изменение запросов, скриптов и т д - опять же в общем случае может существенно повлиять на производительность.
>3. можете посоветовать настройки innoDB, чтобы она эффективно использовала ОЗУ (например полностью помещала таблицу в ОЗУ)?
выделяй достаточно, но не сверх меры, памяти. Об остальном - в поиск по интернету и по данному форуму тоже.
Попробуй начать читать, _много_ читать.
1 - нет
2 - да
3 - могу ( если конкретнее хотите - ман в руки)
> 1 - нетПочему нет? Всё нормально должно быть.
InnoDB это отдельное хранилище. У него отдельное пространство, структура и файловая структура в фс.
http://ru.wikipedia.org/wiki/InnoDB
Так что всю базу пихать придется в InnoDB.
> InnoDB это отдельное хранилище. У него отдельное пространство, структура и файловая структура
> в фс.
> http://ru.wikipedia.org/wiki/InnoDB
> Так что всю базу пихать придется в InnoDB.как странно на форуме SQL мне говорят что это совершенно нормально.... хммм....
> InnoDB это отдельное хранилище. У него отдельное пространство, структура и файловая структура
> в фс.А ещё это отдельное пространство одно на все базы в пределах одного сервера. И что из этого? - теперь все базы запихнёте в InnoDB?
Мускул в состоянии совместить таблицы из разных физических хранилищ.
> Привет.
> Возникла такая ситуация:
> - имеется сервер с 4 гигами ОЗУ.
> - в какойто момент возникает сверх нагрзка (тучи пользователей), апачами съедается вся
> оперативка, сервер влезает в swap, всё жутко тормозит и все пользователи
> скорбят о кончине.как мля тебя еще не выгнали с работы? я те русским по белому сказал, что делать в твоей первой теме.
>[оверквотинг удален]
> - новый сервер с 8 гигами оперативки.
> - установка nginx, для экономии памяти.
> - конвертация тех таблиц в innoDB, чтобы исключить блокировку всей таблицы.
> В связи с чем у меня вопросы:
> 1. нормальна ли ситуация когда в одной БД, некоторые таблицы в MyISAM
> а некоторые в innoDB?
> 2. нужно ли чтото менять в запросах, скриптах, после изменения таблиц на
> innoDB?
> 3. можете посоветовать настройки innoDB, чтобы она эффективно использовала ОЗУ (например
> полностью помещала таблицу в ОЗУ)?а про InnoDb движок забуть ваще пока. Ты ща не прешь даже MyISAM - куда тебе дльше лезть?
хочешь еще с транзакциями морочиться? флаг - тебе сам знаешь куда. а вот про то, что ты знаешь о транзакциях даже я далеко не уверен.
>[оверквотинг удален]
> запросов. Так же в логах видно что каждый запрос блокирует таблицу
> на 30-100 секунд.
> вобщем нехватка памяти + очередь в 1000 запросов из-за блокировки таблицы.
> Как я хочу решить проблему:
> - новый сервер с 8 гигами оперативки.
> - установка nginx, для экономии памяти.
> - конвертация тех таблиц в innoDB, чтобы исключить блокировку всей таблицы.
> В связи с чем у меня вопросы:
> 1. нормальна ли ситуация когда в одной БД, некоторые таблицы в MyISAM
> а некоторые в innoDB?да
> 2. нужно ли чтото менять в запросах, скриптах, после изменения таблиц на
> innoDB?учитывая специфику работы движка (транзакции), сдедует в начале выполнить тщательную настройку первого, а уж потом смотреть в сторону правки запросов для дальнейшей оптимизации
> 3. можете посоветовать настройки innoDB, чтобы она эффективно использовала ОЗУ (например
> полностью помещала таблицу в ОЗУ)?ОЗУ не самый важный момент здесь - всегда по логам можно увидеть и добавить там, где надо (да и не дали Вы достаточных, чтобы точно ответить на этот вопрос).
обратите в первую очередь внимание на уровни изоляции транзакций, способы блокировки и разрешение ситуаций deathlock для движка InnoDB. подумайте, какие таблицы БД стоит переводить на этот движок...