Mysql Низкая производительность MySQL на мощном железе

Сергей Тарасов

Профессор
Вы определитесь сначала у вас сервер DB web или все сразу. Потом посчитайте нагрузку транзакции iops и тд
а потом уже надо думать куда что писать.
А начитать форумов как парвильно делать, купить железо и не понимать почемуже mysql тормозит............
Ну как бы не очень конструктивный ответ. :)

Сейчас вопрос про MySQL. Вы написали, зачем мне SSD, если в память дескать вся база влезает. Но в базу то и писать данные нужно, и лог транзакций вести, а это - на диск сбрасывать. :) Поэтому ремарка про SSD мне ваша не понятна.

В целом я не просил совета по выбору железа, не уверен также, что у вас есть в этом опыт, раз советуете сделать RAID 10 из SSD, видимо никогда не делали.

За комментарии спасибо, но к сожалению, из них пока совершенно не ясно куда копать и что смотреть. Если есть конкретные предложения - пишите в личку, обсудим.

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

Сергей Тарасов

Профессор
Коллеги, выручайте!!! :)

Как и чем померить, обо что спотыкается MySQL? Ни top, ни htop, ни iostat не дают ничего интересного!!!
 

Тугай

Новичок
myisam не совместим с oltp :)

Раз нагрузки нет, то потоки тупо ждут друг друга.
Как вариант попробывать включить low_priority_updates = ON
 

Сергей Тарасов

Профессор
fixxxer, спасибо за отклик! :)

show full processlist на нагрузке, что в стейте?
Да ничего криминального:

для InnoDB:

Код:
 15509 | sbtest  | localhost:60360 | sbtest  | Execute |    0 | Sorting result      | SELECT c from sbtest where id between 265378 and 265477 order by c          |
| 15510 | sbtest  | localhost:60361 | sbtest  | Execute |    0 | Copying to tmp table | SELECT DISTINCT c from sbtest where id between 250528 and 250628 order by c |
| 15511 | sbtest  | localhost:60362 | sbtest  | Execute |    0 | Sorting result      | SELECT c from sbtest where id between 251532 and 251631 order by c          |
| 15512 | sbtest  | localhost:60363 | sbtest  | Execute |    0 | Sorting result      | SELECT c from sbtest where id between 250460 and 250559 order by c          |
| 15513 | sbtest  | localhost:60364 | sbtest  | Execute |    0 | Copying to tmp table | SELECT DISTINCT c from sbtest where id between 248824 and 248924 order by c |
| 15514 | sbtest  | localhost:60365 | sbtest  | Execute |    0 | Updating            | UPDATE sbtest set k=k+1 where id=?                                          |
| 15515 | sbtest  | localhost:60366 | sbtest  | Execute |    0 | Sorting result      | SELECT DISTINCT c from sbtest where id between 248853 and 248953 order by c |
| 15516 | sbtest  | localhost:60367 | sbtest  | Execute |    0 | Sorting result      | SELECT c from sbtest where id between 250052 and 250151 order by c          |
| 15517 | sbtest  | localhost:60368 | sbtest  | Execute |    0 | Sorting result      | SELECT c from sbtest where id between 251391 and 251490 order by c          |
| 15518 | sbtest  | localhost:60369 | sbtest  | Execute |    0 | Copying to tmp table | SELECT DISTINCT c from sbtest where id between 249168 and 249268 order by c
Или вот так:

Код:
| 15509 | sbtest  | localhost:60360 | sbtest  | Execute |    0 | Copying to tmp table | SELECT DISTINCT c from sbtest where id between 250965 and 251065 order by c |
| 15510 | sbtest  | localhost:60361 | sbtest  | Execute |    0 | statistics          | SELECT c from sbtest where id=248759                                        |
| 15511 | sbtest  | localhost:60362 | sbtest  | Execute |    0 | Copying to tmp table | SELECT DISTINCT c from sbtest where id between 250830 and 250930 order by c |
| 15512 | sbtest  | localhost:60363 | sbtest  | Execute |    0 | Copying to tmp table | SELECT DISTINCT c from sbtest where id between 250270 and 250370 order by c |
| 15513 | sbtest  | localhost:60364 | sbtest  | Execute |    0 | init                | UPDATE sbtest set c=? where id=?                                            |
| 15514 | sbtest  | localhost:60365 | sbtest  | Execute |    0 | closing tables      | SELECT c from sbtest where id=254315                                        |
| 15515 | sbtest  | localhost:60366 | sbtest  | Query  |    0 | NULL                | NULL                                                                        |
| 15516 | sbtest  | localhost:60367 | sbtest  | Execute |    0 | Copying to tmp table | SELECT DISTINCT c from sbtest where id between 247701 and 247801 order by c |
| 15517 | sbtest  | localhost:60368 | sbtest  | Execute |    0 | Writing to net      | COMMIT                                                                      |
| 15518 | sbtest  | localhost:60369 | sbtest  | Execute |    0 | Copying to tmp table | SELECT DISTINCT c from sbtest where id between 251264 and 251364 order by c |
Для MyISAM результаты:

Код:
| 15569 | sbtest  | localhost:60778 | sbtest  | Query  |    0 | Waiting for table metadata lock | LOCK TABLES sbtest WRITE                                          |
| 15570 | sbtest  | localhost:60779 | sbtest  | Query  |    0 | Waiting for table metadata lock | LOCK TABLES sbtest WRITE                                          |
| 15571 | sbtest  | localhost:60780 | sbtest  | Query  |    0 | Waiting for table metadata lock | LOCK TABLES sbtest WRITE                                          |
| 15572 | sbtest  | localhost:60781 | sbtest  | Query  |    0 | Waiting for table metadata lock | LOCK TABLES sbtest WRITE                                          |
| 15573 | sbtest  | localhost:60782 | sbtest  | Query  |    0 | Waiting for table metadata lock | LOCK TABLES sbtest WRITE                                          |
| 15574 | sbtest  | localhost:60783 | sbtest  | Query  |    0 | Waiting for table metadata lock | LOCK TABLES sbtest WRITE                                          |
| 15575 | sbtest  | localhost:60784 | sbtest  | Query  |    0 | Waiting for table metadata lock | LOCK TABLES sbtest WRITE                                          |
| 15576 | sbtest  | localhost:60785 | sbtest  | Execute |    0 | Sorting result                  | SELECT c from sbtest where id between 179179 and 179278 order by c |
| 15577 | sbtest  | localhost:60786 | sbtest  | Query  |    0 | Waiting for table metadata lock | LOCK TABLES sbtest WRITE                                          |
| 15578 | sbtest  | localhost:60787 | sbtest  | Query  |    0 | Waiting for table metadata lock | LOCK TABLES sbtest WRITE                                          |
 

Сергей Тарасов

Профессор
myisam не совместим с oltp :)
Раз нагрузки нет, то потоки тупо ждут друг друга.
Это понятно, что ждут. :) Вопрос почему? Если есть процессорное время (ни одно ядро толком не нагружается).

Как вариант попробовать включить low_priority_updates = ON
На сервере, который пока использую как эталон, этот параметр тоже выключен. Но на более убогом железе + VPS и всякая виртуализация, имеем результат в 2 раза лучше. :-(

Кто-нить может на своих серверах прогнать тест и показать результаты для сравнения? :)
 

fixxxer

К.О.
Партнер клуба
Да ничего криминального
Как минимум количество сортировок намекает, что сваливаемся в filesort (настоящий), и неплохо бы увеличить соответствующие буферы.
 

Сергей Тарасов

Профессор
Как минимум количество сортировок намекает, что сваливаемся в filesort (настоящий), и неплохо бы увеличить соответствующие буферы.
Да не намекает, почему? :) Буферы и так большие.

Пока никакие эксперименты с диском/файловой системой/настройками не дали ощутимых результатов. Может пакет какой-то кривой? Или какой-то косяк в ОС?
 

fixxxer

К.О.
Партнер клуба
Ну, отсюда не видно :)

sysctl-и (ну, там, file-max, somaxconn итд) не дефолтные, надеюсь? Не свопится ничего?
 

Сергей Тарасов

Профессор
Ну, отсюда не видно :)

sysctl-и (ну, там, file-max, somaxconn итд) не дефолтные, надеюсь? Не свопится ничего?

Дефолтные, но что там в них плохого? :)

Не свопится ничего.

Нарыл вот такую тему: http://serverfault.com/questions/560652/adding-cpus-puts-mysql-5-5-debian-performance-down

Учитывая 40 виртуальных ядер прогноз неутешительный :)
 

AnrDaemon

Продвинутый новичок
Вы текст вообще читаете, или только картинки смотрите?
У товарища 5.5.31 был на момент теста.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Думаю, я выражу общее мнение, ну или на худой конец, просто свое: чувак, ты странный. Зачем ты задаешь вопросы, если не хочешь слушать ответы?
 

damner2

Новичок
А на InnoDB у вас тоже в 2 раза меньше произодительность, чем на VPS?
 

Сергей Тарасов

Профессор
Думаю, я выражу общее мнение, ну или на худой конец, просто свое: чувак, ты странный. Зачем ты задаешь вопросы, если не хочешь слушать ответы?
Пока не увидел здесь конструктивных ответов, увы. :) Комментарии на тему школьного курса по MySQL и размеры буферов, уж извините, не считаются,- все это было перепробовано задолго до открытия темы... :)
 

fixxxer

К.О.
Партнер клуба
Сверху