Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте. У меня собсна такая проблема. Очень сильно грузится MySQL сервер в 746мс,а допустимая нагрузка в 500мс. Обращался в ТП хостинга и мне сказали что тут проблему надо выявлять.
Нагрузка создается из-за базы данных p220403_ms. Ниже лог медленных запросов для данной базы за 13-ое января:
# 346.9s user time, 1.6s system time, 25.91M rss, 204.78M vsz
# Current date: Tue Jan 14 17:29:37 2014
# Hostname: mysql3.ihc.ru
# Files: /var/log/mysql-slow.log-20140113
# Overall: 20.13k total, 5 unique, 0.23 QPS, 0.00x concurrency ___________
# Time range: 2014-01-12 04:02:14 to 2014-01-13 04:01:11
# Attribute total min max avg 95% stddev median
# ============ ======= ======= ======= ======= ======= ======= =======
# Exec time 338s 11ms 4s 17ms 24ms 29ms 15ms
# Lock time 3s 28us 156ms 138us 273us 2ms 49us
# Rows sent 53.06k 1 22.49k 2.70 0.99 179.79 0.99
# Rows examine 458.16M 10.91k 25.91k 23.30k 24.75k 1.63k 22.45k
# Rows affecte 0 0 0 0 0 0 0
# Rows read 458.16M 10.91k 25.91k 23.30k 24.75k 1.63k 22.45k
# Bytes sent 4.82M 63 2.57M 250.89 62.76 19.33k 62.76
# Query size 2.52M 35 145 131.07 143.84 15.55 136.99
# Profile
# Rank Query ID Response time Calls R/Call V/M Item
# ==== ================== ============== ===== ====== ===== ============
# 1 0xCD10F1D1CAFD0606 184.5246 54.5% 9996 0.0185 0.01 SELECT mslog
# 2 0x950D6DAAA8C3F01F 147.0323 43.5% 9996 0.0147 0.00 SELECT mslog
# MISC 0xMISC 6.7757 2.0% 142 0.0477 0.0 <3 ITEMS>
# Query 1: 0.12 QPS, 0.00x concurrency, ID 0xCD10F1D1CAFD0606 at byte 721979883
# This item is included in the report because it matches --limit.
# Scores: V/M = 0.01
# Time range: 2014-01-12 04:02:14 to 2014-01-13 04:01:11
# Attribute pct total min max avg 95% stddev median
# ============ === ======= ======= ======= ======= ======= ======= =======
# Count 49 9996
# Exec time 54 185s 11ms 728ms 18ms 26ms 11ms 16ms
# Lock time 31 877ms 35us 53ms 87us 125us 586us 54us
# Rows sent 18 9.76k 1 1 1 1 0 1
# Rows examine 49 227.41M 21.21k 25.91k 23.30k 24.75k 1.62k 22.45k
# Rows affecte 0 0 0 0 0 0 0 0
# Rows read 49 227.41M 21.21k 25.91k 23.30k 24.75k 1.62k 22.45k
# Bytes sent 12 618.57k 63 64 63.37 62.76 0.00 62.76
# Query size 54 1.38M 145 145 145 145 0 145
# String:
# Databases p220403_ms
# Hosts
# Last errno 0
# Users p220403_ms
# Query_time distribution
# 1us
# 10us
# 100us
# 1ms
# 10ms ################################################################
# 100ms #
# 1s
# 10s+
# Tables
# SHOW TABLE STATUS FROM `p220403_ms` LIKE 'mslog'\G
# SHOW CREATE TABLE `p220403_ms`.`mslog`\G
# EXPLAIN /*!50100 PARTITIONS*/
SELECT COUNT(DISTINCT CONCAT(`ip`,':',`port`)) AS `unique` FROM `mslog` WHERE timeyear = 2014 and timemonth = 01 and timeday = 12 and type = 'cs'\G
# Query 2: 0.12 QPS, 0.00x concurrency, ID 0x950D6DAAA8C3F01F at byte 471036241
# This item is included in the report because it matches --limit.
# Scores: V/M = 0.00
# Time range: 2014-01-12 04:02:14 to 2014-01-13 04:01:11
# Attribute pct total min max avg 95% stddev median
# ============ === ======= ======= ======= ======= ======= ======= =======
# Count 49 9996
# Exec time 43 147s 11ms 426ms 15ms 19ms 8ms 14ms
# Lock time 63 2s 28us 156ms 177us 490us 2ms 42us
# Rows sent 18 9.76k 1 1 1 1 0 1
# Rows examine 49 227.41M 21.21k 25.91k 23.30k 24.75k 1.62k 22.45k
# Rows affecte 0 0 0 0 0 0 0 0
# Rows read 49 227.41M 21.21k 25.91k 23.30k 24.75k 1.62k 22.45k
# Bytes sent 12 621.56k 63 64 63.67 62.76 0.00 62.76
# Query size 44 1.12M 117 117 117 117 0 117
# String:
# Databases p220403_ms
# Hosts
# Last errno 0
# Users p220403_ms
# Query_time distribution
# 1us
# 10us
# 100us
# 1ms
# 10ms ################################################################
# 100ms #
# 1s
# 10s+
# Tables
# SHOW TABLE STATUS FROM `p220403_ms` LIKE 'mslog'\G
# SHOW CREATE TABLE `p220403_ms`.`mslog`\G
# EXPLAIN /*!50100 PARTITIONS*/
SELECT COUNT(`ip`) AS `unique` FROM `mslog` WHERE timeyear = 2014 and timemonth = 01 and timeday = 12 and type = 'cs'\G
Помогите пожалуйста.
Неактивен
Раз Вы храните год, месяц и день раздельно (почему бы не хранить это все в одном поле типа date?), то именно эти запросы
SELECT COUNT(DISTINCT CONCAT(`ip`,':',`port`)) AS `unique` FROM `mslog` WHERE timeyear = 2014 and timemonth = 01 and timeday = 12 and type = 'cs'\G SELECT COUNT(`ip`) AS `unique` FROM `mslog` WHERE timeyear = 2014 and timemonth = 01 and timeday = 12 and type = 'cs'\G
если мыслить, так сказать, в лоб, должен ускорить составной индекс
(`timeyear`,`timemonth`,`timeday`,`type`)
ALTER TABLE `mslog` ADD INDEX (`timeyear`,`timemonth`,`timeday`,`type`);
Неактивен
Ещё покажите структуру таблицы и план запросов, т.е.
Неактивен
deadka написал:
Раз Вы храните год, месяц и день раздельно (почему бы не хранить это все в одном поле типа date?), то именно эти запросы
Код:
SELECT COUNT(DISTINCT CONCAT(`ip`,':',`port`)) AS `unique` FROM `mslog` WHERE timeyear = 2014 and timemonth = 01 and timeday = 12 and type = 'cs'\G SELECT COUNT(`ip`) AS `unique` FROM `mslog` WHERE timeyear = 2014 and timemonth = 01 and timeday = 12 and type = 'cs'\Gесли мыслить, так сказать, в лоб, должен ускорить составной индекс
(`timeyear`,`timemonth`,`timeday`,`type`)
ALTER TABLE `mslog` ADD INDEX (`timeyear`,`timemonth`,`timeday`,`type`);
т.е как я понял создать поле и запихнуть туда дату, время?
Неактивен
Нет, посмотрите FAQ №5
И приведите результаты команд из поста http://sqlinfo.ru/forum/viewtopic.php?pid=38722#p38722 иначе будем гадать на кофейной гуще.
Неактивен
vasya написал:
Ещё покажите структуру таблицы и план запросов, т.е.
SHOW CREATE TABLE `p220403_ms`.`mslog`\G
explain SELECT COUNT(DISTINCT CONCAT(`ip`,':',`port`)) AS `unique` FROM `mslog` WHERE timeyear = 2014 and timemonth = 01 and timeday = 12 and type = 'cs'\G
explain SELECT COUNT(`ip`) AS `unique` FROM `mslog` WHERE timeyear = 2014 and timemonth = 01 and timeday = 12 and type = 'cs'\G
P.S. А кто знает что такое us?
# Lock time 31 877ms 35us 53ms 87us 125us 586us 54us
Неактивен
вот ещё
Неактивен
Жесть какая. Отчего у вас все поля текстовые?
И все-таки, выполните указанные мной запросы и покажите их результат (если возможно, то в текстовом виде).
Неактивен
vasya написал:
И все-таки, выполните указанные мной запросы и покажите их результат (если возможно, то в текстовом виде).
Я не особо силен в этой сфере. Подскажите пожалуйста,что нужно сделать?
Неактивен
Ну, вы как-то делаете запросы к базе? Судя по скрину у вашего клиента есть вкладка, на которой можно выполнять sql запросы к базе. Нужно выполнить 3 запроса и показать здесь результат их выполнения (можно в виде скрина, если не получается в текстовом)
SHOW CREATE TABLE `p220403_ms`.`mslog`\G
explain SELECT COUNT(DISTINCT CONCAT(`ip`,':',`port`)) AS `unique` FROM `mslog` WHERE timeyear = 2014 and timemonth = 01 and timeday = 12 and type = 'cs'\G
explain SELECT COUNT(`ip`) AS `unique` FROM `mslog` WHERE timeyear = 2014 and timemonth = 01 and timeday = 12 and type = 'cs'\G
Неактивен