Как интерпретировать вывод профиля MySQL для настройки внешнего сервера MySQL - PullRequest
3 голосов
/ 09 мая 2011

Я недавно обновил сайт Drupal до среды с несколькими веб-заголовками и пытаюсь настроить MySQL с движком InnoDB.Я заметил, что запросы SELECT в производственном процессе выполняются быстрее, чем в промежуточном режиме, но запросы UPDATE медленнее в производственном процессе.

  • Постановка: на виртуальной машине со стеком LAMP.
  • Производство: в два разавеб-головки с балансировщиком нагрузки.Выделенный сервер MySQL и второй сервер БД с горячим резервированием.

Мой системный администратор говорит мне, что задержка связана с 1) удаленным подключением к БД и 2) двоичным журналированием для репликации данных между двумя серверами БД.

Я новичок в InnoDB и многосерверной среде.Я хотел бы посмотреть, подтверждают ли выходные данные из профиля MySQL мои настройки сервера или есть ли еще место для дальнейшей оптимизации производственного сервера MySQL.

Это то, что я запускал из промежуточных и производственных баз данных.Я изменил вывод с рядом столбцов для сравнения.Обратите внимание, что запрос выполняется быстрее на производстве для всех строк в таблице, за исключением строки со статусом «конец».Является ли «конечная» фаза, в которой выполняется двоичное ведение журнала?

mysql> SET profiling = 1;
mysql> UPDATE node SET created = created + 1 WHERE nid = 100;
mysql> SHOW profile;
+----------------------+----------+------------+
| Status               | Staging  | Production |
+----------------------+----------+------------+
| starting             | 0.000100 | 0.000037   |
| checking permissions | 0.000014 | 0.000006   |
| Opening tables       | 0.000042 | 0.000017   |
| System lock          | 0.000007 | 0.000004   |
| Table lock           | 0.000009 | 0.000003   |
| init                 | 0.000076 | 0.000030   |
| Updating             | 0.000062 | 0.000022   |
| end                  | 0.000031 | 0.002159   |
| query end            | 0.000006 | 0.000003   |
| freeing items        | 0.000010 | 0.000003   |
| closing tables       | 0.000009 | 0.000002   |
| logging slow query   | 0.000005 | 0.000001   |
| cleaning up          | 0.000004 | 0.000001   |
+----------------------+----------+------------+
| Total                | 0.000385 | 0.002288   |
+----------------------+----------+------------+

1 Ответ

1 голос
/ 09 мая 2011

Ты на деньгах.«Конечное» состояние включает двоичное ведение журнала.

Для конечного состояния могут выполняться следующие операции:

  • Удаление записей кэша запросов после того, как данные в таблицеизменено
  • Запись события в двоичный журнал
  • Освобождение буферов памяти, в том числе для больших двоичных объектов

http://dev.mysql.com/doc/refman/5.5/en/general-thread-states.html

...