mysql имеющие загрузки

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

2
задан 28 April 2011 в 15:43
3 ответа

Что Ваша размещающая предоставленная команда не является журналом, но текущим рабочим процессом Mysql, который был получен из mysqladmin PR (ocesslist).

И Ваш список Mysql proc показывает, что у Вас есть несколько экземпляров главным образом 2 запросов:

ВЫБЕРИТЕ количество (friend_id) AS total_friends ОТ se_friends ГДЕ friend_status = '1'

ВЫБЕРИТЕ ОТЛИЧНЫЙ SQL_CALC_FOUND_ROWS se_users.user_id, se_users.user_username, se_users.us

Я не уверен, завершены ли они, но затем необходимо оптимизировать запросы. например:-необходимо использовать количество (*) вместо количества (friend_id)

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

Согласно системному выводу вершины, Mysql занимает 600% ЦП, и похоже, что Вашему серверу Mysql плохо нужна некоторая тонкая настройка. Btw, Ваша главная интерпретация является неправильной, это не пользователь дб (mysql пользователь), но пользователь системы.

И так как много процессов PHP также использует загрузку сервера, Ваш сервер в целом требует некоторой настройки. Сделайте его раньше, чем позже.

Для оптимизации Mysql необходимо попытаться настроить следующие переменные:

Следующие переменные установят глобальные буферы

max_connections

max_user_connections

table_cache

key_buffer_size

query_cache_size

Вар ниже установит на буферы потока:

tmp_table_size max_heap_table_size

read_buffer_size sort_buffer_size

join_buffer_size

Вар ниже должен быть настроен при использовании InnoDB:

innodb_log_buffer_size

innodb_additional_mem_pool_size

innodb_buffer_pool_size

Существует много других переменных, на которые нужно посмотреть также. Однако, если бы Вы настраиваете вышеупомянутые переменные для удовлетворения требованию, которое сделало бы мир различия в терминах производительности.

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

Если Вы не имеете достаточного количества времени для изучения, приносите кому-то, кто знает, что задание делает его.

3
ответ дан 3 December 2019 в 11:05

Много процессов в 'Передающих данных' подразумевает, что или существует что-то очень неправильно с обработкой ответов в логическом уровне, или что много запросов возвращает очень большие наборы результатов. Вы не упоминали то, в чем реализован логический уровень.

Смотря на SQL, тот же SQL неожиданно возникает снова и снова:

SELECT count(friend_id) AS total_friends FROM se_friends WHERE friend_status='1'

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

Этот запрос только возвращает одну строку. Но его взятием приблизительно 2 секунд для SQL для выполнения и чтобы логика получила данные (так как нет ни одного из них выполняющих его, предполагает, что запрос работает очень быстро, меньше чем 0,1 секунды - большинство времени, занимается логический уровень). В то время как это может возникнуть из-за очень медленной сети между базой данных и логическим уровнем, дело не в этом здесь (соединения от localhost). Могло также произойти, где существует проблема с контекстным переключением - сервер базы данных и клиент постоянно становятся предвосхищенными некоторым другим процессом. Но с 6 ядрами, которые должны были бы быть очень агрессивным процессом.

Если можно заставить логический уровень получать данные раньше, это будет иметь огромное значение к загрузке.

Предоставьте больше подробную информацию о выполняемом SQL и логический уровень и вывод 'вершины'

0
ответ дан 3 December 2019 в 11:05

Смотря на Ваш столбец времени выше, кажется, что следующее утверждение является самым медленным:

SELECT DISTINCT SQL_CALC_FOUND_ROWS se_users.user_id, se_users.user_username, se_users.us

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

Для изменения этого Вы могли включать, ГДЕ оператор, что ссылочные индексы, используйте команду LIMIT или используйте команду EXPLAIN для отладки оператора.

Можно хотеть также изучить mysqltuner, если у Вас есть способность/доступ настроить DB. При попытке отладить загрузку своей базы данных MySQL, вывод вершины, вероятно, не релевантен.

0
ответ дан 3 December 2019 в 11:05

Теги

Похожие вопросы