Тюнинг mysql

M
На сайте с 16.09.2009
Offline
278
#21
netwind:
myhand, если конкретно по сценарию возникновения проблемы вам нечего сказать, то придется поверить одной из ссылок в гугле.

"Ссылкам в гугле" не имею привычки верить без достаточных оснований. А то существенное, что там было - как раз подробно откомментировал. Не похоже на принципиальную проблему, а конкретный баг - был исправлен давно.

Абонементное сопровождение серверов (Debian) Отправить личное сообщение (), написать письмо ().
M
На сайте с 01.12.2009
Offline
235
#22

Не понятно как можно обсуждать , bugs , с версией 5.0 - 5.1 - когда у TC версия 5.5

Администратор Linux,Freebsd. построения крупных проектов.
N
На сайте с 06.05.2007
Offline
419
#23

myhand, раз не хотите учиться на чужих ошибках, мне остается только пожелать вам в новом году набраться собственного опыта и с mysql.

поставьте на всех серверах по 2гб кеша и ждите. на какой-нибудь обязательно начнут жаловаться.

Кнопка вызова админа ()
M
На сайте с 16.09.2009
Offline
278
#24
netwind:
myhand, раз не хотите учиться на чужих ошибках, мне остается только пожелать вам в новом году набраться собственного опыта и с mysql.

Единственная проблема, очевидная из приведенного вами поста - баг в кеше mysql. Повторяю, он исправлен. На каких еще тамошних "ошибках" вы предлагаете мне учиться?

Вот вам более относящаяся к делу ссылка (если кратко, дело вовсе не в блокировках тредов):

http://blogs.oracle.com/dlutz/entry/mysql_query_cache_sizing

netwind:
поставьте на всех серверах по 2гб кеша и ждите. на какой-нибудь обязательно начнут жаловаться.

Не имею привычки тратить память бездумно и делать беспричинные глупости.

Где-то были значения и под 256Mb, но обычно << 128Mb. Увеличиваю потихоньку, собираю статистику - смотрю. По результатам - возвращаю все назад или кручу дальше.

N
На сайте с 06.05.2007
Offline
419
#25
myhand:
Не имею привычки тратить память бездумно и делать беспричинные глупости.
Где-то были значения и под 256Mb, но обычно << 128Mb. Увеличиваю потихоньку, собираю статистику - смотрю. По результатам - возвращаю все назад или кручу дальше.

давайте будем последовательны, в соответствии с предыдущими заявлениями :

myhand:
А чем вам query_cache не угодил? Он же не per-connection выделяется. Не думаю, что имеет смысл тут жадничать

вы должны не жадничая выделить по 2 гб. плохие движки типа DLE ведь иначе никак не ускорить.

2 гб памяти по с равнению с N*20 мб памяти заблокированных N апачей ведь сущая фигня. По вашем словам вы должны только выиграть.

myhand:
Единственная проблема, очевидная из приведенного вами поста - баг в кеше mysql. Повторяю, он исправлен. На каких еще тамошних "ошибках" вы предлагаете мне учиться?

Вот я вам сообщаю об ошибках : я видел конфигурации, которые необъяснимым образом нестабильно тупили при больших значениях кеша и магическим образом переставали при уменьшении. Почему именно я тоже объяснил. И еще несколько случаев видел на форумах.

Проанализируйте и сделайте выводы - учитесь.

Если меня вам недостаточно, там по ссылке еще Каллаган сказал, что кеш плох и почему.

Вообще говоря, query cache уникальная фича mysql. Больше нигде ее нет.

При низкоконкурентной нагрузке то, что описано по вашей ссылке (http://blogs.oracle.com/dlutz/entry/mysql_query_cache_sizing) более важно, чем взаимные блокировки. Тут соглашусь.

Баг в mysql связан с зависанием навечно. Конечно, печально, но речь не о нем.

Собственно, чего далеко ходить, вот документация:

http://dev.mysql.com/doc/refman/5.1/en/query-cache.html

Be cautious about sizing the query cache excessively large, which increases the overhead required to maintain the cache, possibly beyond the benefit of enabling it. Sizes in tens of megabytes are usually beneficial. Sizes in the hundreds of megabytes might not be

и советую точно по ней - 64 мб это как раз ten of megabytes, а 128 - hundreds, которые might not be beneficial.

M
На сайте с 16.09.2009
Offline
278
#26
netwind:
2 гб памяти по с равнению с N*20 мб памяти заблокированных N апачей ведь сущая фигня. По вашем словам вы должны только выиграть.

Только если эти 2Gb будут действительно использоваться.

Во-вторых, не передергивайте, пожалуйста. Я только упомянул, что никакого смысла в изменении размера кеша у ТС - не вижу. Ну разве ради "когда коту делать нечего..."

netwind:
Вот я вам сообщаю об ошибках : я видел конфигурации, которые необъяснимым образом нестабильно тупили при больших значениях кеша и магическим образом переставали при уменьшении.

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

netwind:
Если меня вам недостаточно, там по ссылке еще Каллаган

Не ткнете более конкретно? Что-то не вижу его "ссылки".

netwind:
Баг в mysql связан с зависанием навечно. Конечно, печально, но речь не о нем.

Все остальное по вашей ссылке - бездоказательно, увы.

netwind:
Собственно, чего далеко ходить, вот документация:
http://dev.mysql.com/doc/refman/5.1/en/query-cache.html

В документации ничего не написано про "высокооконкурентную" нагрузку. Там как раз именно то, что я привел из блога оракла:

Be cautious about sizing the query cache excessively large, which increases the overhead required to maintain the cache, possibly beyond the benefit of enabling it.
netwind:
и советую точно по ней - 64 мб это как раз ten of megabytes, а 128 - hundreds, которые might not be beneficial.

*might not be* - вам перевести?

N
На сайте с 06.05.2007
Offline
419
#27

myhand, ну какой же ты нудный.

вот, продиагностируй удаленно . версия 5.5.8, без "бага".

не самая типичная ситуация для хостинга с вечным недостатком памяти, но она встречается у людей с более разнообразным опытом чем у тебя

http://www.sql.ru/forum/actualthread.aspx?bid=6&tid=822926&pg=1

Столкнулся с такой проблемой перейдя на MySQL 5.5.8, до этого был 5.1.x:
периодически множество запросов подвисает со статусом Waiting for query cache lock, запросы абсолютно разные и к разным таблицам. При это замечал, что в этот момент отрабатывают тяжелые запросы на кроне (2-3 секунды на запрос если не появляется Waiting for query cache lock), при это если запросы начинают виснуть со статусом Waiting for query cache lock, то скорость выполнения всех запросов уменьшается в разы... иногда вместо 2-3 сек становится минута и более...

да забыл сказать все таблицы в MyISAM, под кэш выделено 2 гига, база вся 7 гиг, на серваке ща 16 гиг оперативы...

специально выделил важное. в этой ситуации проблемы дизайна query_cache становятся особенно заметны. другие никак не связанные запросы могут тормозиться именно кешем, хотя без него все выполнялось бы параллельно. При большом кеше это становится особенно заметно, но и при маленьком тоже полностью нельзя это явление исключать.

---------- Добавлено в 18:27 ---------- Предыдущее сообщение было в 17:34 ----------

и по своей же ссылке немного не дочитал

http://blogs.oracle.com/dlutz/entry/mysql_query_cache_sizing

In addition, the coarse locking on the cache can lead to lock contention that can kill performance, particularly on multi-core hardware.
M
На сайте с 16.09.2009
Offline
278
#28
netwind:
myhand, ну какой же ты нудный.

Не нравится - не еште.

netwind:
вот, продиагностируй удаленно . версия 5.5.8, без "бага".
не самая типичная ситуация для хостинга с вечным недостатком памяти, но она встречается у людей с более разнообразным опытом чем у тебя

Там достаточно сложно однозначно сказать в чем причина. Людям, которые не смотрят вам в рот - может быть заметно.

Проблема, думаю, опять-таки не в "высокооконкурентной" нагрузке - а буквально в том, что описано в документации и блоге оракла.

Что характерно, проблема появилась при обновлении версии mysql. Может буратин тот, кто это сделал?

netwind:
и по своей же ссылке немного не дочитал

Комментарии посмотри. Самый первый как раз про это. Для справки: в Debian stable сейчас 5.1.49.

Последний раз напомню:

myhand:
Я только упомянул, что никакого смысла в изменении размера кеша у ТС - не вижу. Ну разве ради "когда коту делать нечего..."

Уменьшать с 200Mb до 60Mb - в данном случае замена шило на мыло. Абсолютно бессмысленная без измерений и последующего анализа.

N
На сайте с 06.05.2007
Offline
419
#29
myhand:
Уменьшать с 200Mb до 60Mb - в данном случае замена шило на мыло. Абсолютно бессмысленная без измерений и последующего анализа.

Но в точности по советам в официальной документации. ничего авторитетнее документации быть не может по определению. ТС хотел общих и аргументированных советов - вот, пожалуйста.

myhand:
Комментарии посмотри. Самый первый как раз про это. Для справки: в Debian stable сейчас 5.1.49.

смотрю

Prior to MySQL 5.1.33 a query that used SQL_NO_CACHE would still check the query cache to see whether the result is there

перевожу :

до версии 5.1.33 если запрос использовал SQL_NO_CACHE, результат [в кеше же хранится именно результат] все равно проверялся.

Про остальные случаи, где SQL_NO_CACHE отсутствует в запросе, не написано ничего.

Да и при чем тут комментарии, если в самом блоге в точности подтверждают мои слова.

M
На сайте с 16.09.2009
Offline
278
#30
netwind:
Но в точности по советам в официальной документации.

Как раз напротив. Переведите, пожалуйста:

Sizes in tens of megabytes are usually beneficial. Sizes in the hundreds of megabytes might not be.
netwind:
перевожу :
до версии 5.1.33 если запрос использовал SQL_NO_CACHE, результат [в кеше же хранится именно результат] все равно проверялся.

Вы снова подсократили "перевод". Кстати, как и предыдущую цитату:

The issue here was that the customer had a moderate level of write traffic, and the current query cache implementation invalidates all result sets for a given table whenever that table is updated. As the query cache grows in size, the number of entries that must be invalidated for a given table may grow as well. In addition, the coarse locking on the cache can lead to lock contention that can kill performance, particularly on multi-core hardware.

О гуру, выделите в этом абзаце ключевое предложение. И сравните затем с тем что процитировали вы.

Я о комментарии упомянул еще и потому, что много воды утекло - часть проблем исправлена. Не случайно боец в вашем примере наткнулся на проблему при обновлении.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий