URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 7016
[ Назад ]

Исходное сообщение
"переход с MyISAM на innoDB, чтобы избавиться от deadlock ?"

Отправлено studovnet , 10-Окт-10 15:28 
Привет.
Возникла такая ситуация:
- имеется сервер с 4 гигами ОЗУ.
- в какойто момент возникает сверх нагрзка (тучи пользователей), апачами съедается вся оперативка, сервер влезает в swap, всё жутко тормозит и все пользователи скорбят о кончине.
- в логах mysql видно что абсолютно все запросы становятся сверх медленными (до 1000 секунд выполняются), в основном в моммент этой нагрузки используются 2 таблицы, на которые резко возростает кол-во UPDATE, SELECT и INSERT запросов. Так же в логах видно что каждый запрос блокирует таблицу на 30-100 секунд.

вобщем нехватка памяти + очередь в 1000 запросов из-за блокировки таблицы.

Как я хочу решить проблему:
- новый сервер с 8 гигами оперативки.
- установка nginx, для экономии памяти.
- конвертация тех таблиц в innoDB, чтобы исключить блокировку всей таблицы.

В связи с чем у меня вопросы:
1. нормальна ли ситуация когда в одной БД, некоторые таблицы в MyISAM а некоторые в innoDB?
2. нужно ли чтото менять в запросах, скриптах, после изменения таблиц на innoDB?
3. можете посоветовать настройки innoDB, чтобы она эффективно использовала ОЗУ (например полностью помещала таблицу в ОЗУ)?


Содержание

Сообщения в этом обсуждении
"переход с MyISAM на innoDB, чтобы избавиться от deadlock ?"
Отправлено Michael , 10-Окт-10 15:46 
>[оверквотинг удален]
> - новый сервер с 8 гигами оперативки.
> - установка nginx, для экономии памяти.
> - конвертация тех таблиц в innoDB, чтобы исключить блокировку всей таблицы.
> В связи с чем у меня вопросы:
> 1. нормальна ли ситуация когда в одной БД, некоторые таблицы в MyISAM
> а некоторые в innoDB?
> 2. нужно ли чтото менять в запросах, скриптах, после изменения таблиц на
> innoDB?
> 3. можете посоветовать настройки innoDB, чтобы она эффективно использовала ОЗУ (например
> полностью помещала таблицу в ОЗУ)?

RFTM High performance mysql, mysql performance blog
в двух словах содержимое целой книги вам никто не перескажет


"переход с MyISAM на innoDB, чтобы избавиться от deadlock ?"
Отправлено studovnet , 10-Окт-10 15:59 
>[оверквотинг удален]
>> - конвертация тех таблиц в innoDB, чтобы исключить блокировку всей таблицы.
>> В связи с чем у меня вопросы:
>> 1. нормальна ли ситуация когда в одной БД, некоторые таблицы в MyISAM
>> а некоторые в innoDB?
>> 2. нужно ли чтото менять в запросах, скриптах, после изменения таблиц на
>> innoDB?
>> 3. можете посоветовать настройки innoDB, чтобы она эффективно использовала ОЗУ (например
>> полностью помещала таблицу в ОЗУ)?
> RFTM High performance mysql, mysql performance blog
> в двух словах содержимое целой книги вам никто не перескажет

ну я вообщето и не просил что то мне рассказывать ... я по моему конкретные вопросы задал, 3 шт. ...


"переход с MyISAM на innoDB, чтобы избавиться от deadlock ?"
Отправлено Michael , 10-Окт-10 23:16 
>[оверквотинг удален]
>>> 1. нормальна ли ситуация когда в одной БД, некоторые таблицы в MyISAM
>>> а некоторые в innoDB?
>>> 2. нужно ли чтото менять в запросах, скриптах, после изменения таблиц на
>>> innoDB?
>>> 3. можете посоветовать настройки innoDB, чтобы она эффективно использовала ОЗУ (например
>>> полностью помещала таблицу в ОЗУ)?
>> RFTM High performance mysql, mysql performance blog
>> в двух словах содержимое целой книги вам никто не перескажет
> ну я вообщето и не просил что то мне рассказывать ... я
> по моему конкретные вопросы задал, 3 шт. ...

в общем-то вам на них так же конкрентно ответили. см пост #4


"переход с MyISAM на innoDB, чтобы избавиться от deadlock ?"
Отправлено PavelR , 10-Окт-10 16:32 

сначала установи nginx, а уже потом смотри, стоит ли тебе что-то оптимизировать или нет.

Вообще, если движок чужой - то ну нафиг в него лезть. ИЛи - делать его "своим, родным, близким"


>В связи с чем у меня вопросы:
>1. нормальна ли ситуация когда в одной БД, некоторые таблицы в MyISAM а некоторые в innoDB?

сойдет

>2. нужно ли чтото менять в запросах, скриптах, после изменения таблиц на innoDB?

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

>3. можете посоветовать настройки innoDB, чтобы она эффективно использовала ОЗУ (например полностью помещала таблицу в ОЗУ)?

выделяй достаточно, но не сверх меры, памяти. Об остальном - в поиск по интернету и по данному форуму тоже.

Попробуй начать читать, _много_ читать.


"переход с MyISAM на innoDB, чтобы избавиться от deadlock ?"
Отправлено Аноним , 10-Окт-10 22:37 
1 - нет
2 - да
3 - могу ( если конкретнее хотите - ман в руки)

"переход с MyISAM на innoDB, чтобы избавиться от deadlock ?"
Отправлено Etch , 11-Окт-10 08:11 
> 1 - нет

Почему нет? Всё нормально должно быть.


"переход с MyISAM на innoDB, чтобы избавиться от deadlock ?"
Отправлено co6aka , 12-Окт-10 04:14 
InnoDB это отдельное хранилище. У него отдельное пространство, структура и файловая структура в фс.
http://ru.wikipedia.org/wiki/InnoDB
Так что всю базу пихать придется в InnoDB.

"переход с MyISAM на innoDB, чтобы избавиться от deadlock ?"
Отправлено studovnet , 12-Окт-10 12:16 
> InnoDB это отдельное хранилище. У него отдельное пространство, структура и файловая структура
> в фс.
> http://ru.wikipedia.org/wiki/InnoDB
> Так что всю базу пихать придется в InnoDB.

как странно на форуме SQL мне говорят что это совершенно нормально.... хммм....


"переход с MyISAM на innoDB, чтобы избавиться от deadlock ?"
Отправлено Etch , 12-Окт-10 17:20 
> InnoDB это отдельное хранилище. У него отдельное пространство, структура и файловая структура
> в фс.

А ещё это отдельное пространство одно на все базы в пределах одного сервера. И что из этого? - теперь все базы запихнёте в InnoDB?
Мускул в состоянии совместить таблицы из разных физических хранилищ.


"переход с MyISAM на innoDB, чтобы избавиться от deadlock ?"
Отправлено LSTemp , 17-Окт-10 06:47 
> Привет.
> Возникла такая ситуация:
> - имеется сервер с 4 гигами ОЗУ.
> - в какойто момент возникает сверх нагрзка (тучи пользователей), апачами съедается вся
> оперативка, сервер влезает в swap, всё жутко тормозит и все пользователи
> скорбят о кончине.

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



"переход с MyISAM на innoDB, чтобы избавиться от deadlock ?"
Отправлено LSTemp , 17-Окт-10 06:51 
>[оверквотинг удален]
> - новый сервер с 8 гигами оперативки.
> - установка nginx, для экономии памяти.
> - конвертация тех таблиц в innoDB, чтобы исключить блокировку всей таблицы.
> В связи с чем у меня вопросы:
> 1. нормальна ли ситуация когда в одной БД, некоторые таблицы в MyISAM
> а некоторые в innoDB?
> 2. нужно ли чтото менять в запросах, скриптах, после изменения таблиц на
> innoDB?
> 3. можете посоветовать настройки innoDB, чтобы она эффективно использовала ОЗУ (например
> полностью помещала таблицу в ОЗУ)?

а про InnoDb движок забуть ваще пока. Ты ща не прешь даже MyISAM - куда тебе дльше лезть?
хочешь еще с транзакциями морочиться? флаг - тебе сам знаешь куда. а вот про то, что ты знаешь о транзакциях даже я далеко не уверен.


"переход с MyISAM на innoDB, чтобы избавиться от deadlock ?"
Отправлено LSTemp , 12-Май-11 01:59 
>[оверквотинг удален]
> запросов. Так же в логах видно что каждый запрос блокирует таблицу
> на 30-100 секунд.
> вобщем нехватка памяти + очередь в 1000 запросов из-за блокировки таблицы.
> Как я хочу решить проблему:
> - новый сервер с 8 гигами оперативки.
> - установка nginx, для экономии памяти.
> - конвертация тех таблиц в innoDB, чтобы исключить блокировку всей таблицы.
> В связи с чем у меня вопросы:
> 1. нормальна ли ситуация когда в одной БД, некоторые таблицы в MyISAM
> а некоторые в innoDB?

да

> 2. нужно ли чтото менять в запросах, скриптах, после изменения таблиц на
> innoDB?

учитывая специфику работы движка (транзакции), сдедует в начале выполнить тщательную настройку первого, а уж потом смотреть в сторону правки запросов для дальнейшей оптимизации

> 3. можете посоветовать настройки innoDB, чтобы она эффективно использовала ОЗУ (например
> полностью помещала таблицу в ОЗУ)?

ОЗУ не самый важный момент здесь - всегда по логам можно увидеть и добавить там, где надо (да и не дали Вы достаточных, чтобы точно ответить на этот вопрос).

обратите в первую очередь внимание на уровни изоляции транзакций, способы блокировки и разрешение ситуаций deathlock для движка InnoDB. подумайте, какие таблицы БД стоит переводить на этот движок...