Добрый день.
Имею сайт с метками на гугл карте.
Недавно сделал вывод нескольких точек на одной карте (от 30 до 300) и таких страниц около 50ти (а планируется больше). Данные берутся из элемента уже координатами, без запроса к гуглу или другим сервисам геокодинга. Сама карта, при открытии страницы, грузит достаточно быстро, без проблем.
После чего начал получать письма от хостера с превышением нагрузки, причем распределение по времени очень странное. То есть нагрузка максимальная в час-два ночи, а по данным метрики никого в этот момент не было. Попросил хостера прислать логи. Он прислал статистику медленных запросов.
# 709s user time, 2.1s system time, 26.04M rss, 204.74M vsz
# Current date: Sun Mar 9 11:18:05 2014
# Hostname: mysql5.ihc.ru
# Files: /var/log/mysql-slow.log-20140308
# Overall: 7.46k total, 14 unique, 0.09 QPS, 0.01x concurrency ___________
# Time range: 2014-03-07 04:03:01 to 2014-03-08 03:57:50
# Attribute total min max avg 95% stddev median
# ============ ======= ======= ======= ======= ======= ======= =======
# Exec time 1229s 2ms 3s 165ms 219ms 93ms 171ms
# Lock time 6s 26us 488ms 847us 657us 10ms 113us
# Rows sent 9.48M 1 139.85k 1.30k 5.45k 3.04k 329.68
# Rows examine 329.57M 1011 139.85k 45.26k 56.74k 16.80k 49.01k
# Rows affecte 0 0 0 0 0 0 0
# Rows read 329.57M 1011 139.85k 45.26k 56.74k 16.80k 49.01k
# Bytes sent 769.05M 108 80.68M 105.62k 328.61k 1.28M 17.59k
# Query size 5.84M 78 1.17k 820.88 1.09k 129.33 755.64
# Profile
# Rank Query ID Response time Calls R/Call V/M Item
# ==== ================== ============== ===== ====== ===== ==============
# 1 0x6EA2DABC851E62FC 897.9274 73.1% 4934 0.1820 0.01 SELECT jos_zoo_item jos_zoo_jbzoo_index_card
# 2 0xBA1D7123A3AA9D32 310.2388 25.2% 1484 0.2091 0.03 SELECT jos_zoo_item jos_zoo_jbzoo_index_card
# MISC 0xMISC 20.5734 1.7% 1038 0.0198 0.0 <12 ITEMS>
# Query 1: 0.06 QPS, 0.01x concurrency, ID 0x6EA2DABC851E62FC at byte 74780414
# This item is included in the report because it matches --limit.
# Scores: V/M = 0.01
# Time range: 2014-03-07 04:03:01 to 2014-03-08 03:54:45
# Attribute pct total min max avg 95% stddev median
# ============ === ======= ======= ======= ======= ======= ======= =======
# Count 66 4934
# Exec time 73 898s 141ms 1s 182ms 208ms 45ms 171ms
# Lock time 57 4s 75us 420ms 741us 301us 9ms 108us
# Rows sent 9 960.08k 67 334 199.26 329.68 131.89 65.89
# Rows examine 72 240.07M 49.57k 50.09k 49.82k 49.01k 0 49.01k
# Rows affecte 0 0 0 0 0 0 0 0
# Rows read 72 240.07M 49.57k 50.09k 49.82k 49.01k 0 49.01k
# Bytes sent 7 57.11M 5.45k 18.37k 11.85k 17.59k 6.20k 5.20k
# Query size 62 3.64M 774 774 774 774 0 774
# String:
# Databases название базы
# Hosts
# Last errno 0
# Users название базы
# Query_time distribution
# 1us
# 10us
# 100us
# 1ms
# 10ms
# 100ms ################################################################
# 1s #
# 10s+
# Tables
# SHOW TABLE STATUS FROM `название базы` LIKE 'jos_zoo_item'\G
# SHOW CREATE TABLE `название базы`.`jos_zoo_item`\G
# SHOW TABLE STATUS FROM `название базы` LIKE 'jos_zoo_jbzoo_index_card'\G
# SHOW CREATE TABLE `название базы`.`jos_zoo_jbzoo_index_card`\G
# EXPLAIN /*!50100 PARTITIONS*/
SELECT tIndex.e_97ea4c26aea54cbfa30434e52f766cda_s AS value,
tIndex.e_97ea4c26aea54cbfa30434e52f766cda_s AS text,
COUNT(tIndex.e_97ea4c26aea54cbfa30434e52f766cda_s) AS count
FROM jos_zoo_item AS tItem
INNER JOIN jos_zoo_jbzoo_index_card AS tIndex ON tIndex.item_id = tItem.id
WHERE tItem.access IN (1)
AND tItem.state = '1'
AND (tItem.publish_up = '0000-00-00 00:00:00' OR tItem.publish_up <= '2014-03-07 01:22:42')
AND (tItem.publish_down = '0000-00-00 00:00:00' OR tItem.publish_down >= '2014-03-07 01:22:42')
AND tItem.searchable = '1'
AND tItem.type = 'card'
AND tItem.application_id = '5'
AND tIndex.e_97ea4c26aea54cbfa30434e52f766cda_s <> ""
AND tIndex.e_97ea4c26aea54cbfa30434e52f766cda_s IS NOT NULL
GROUP BY tIndex.e_97ea4c26aea54cbfa30434e52f766cda_s\G
# Query 2: 0.02 QPS, 0.00x concurrency, ID 0xBA1D7123A3AA9D32 at byte 1602742293
# This item is included in the report because it matches --limit.
# Scores: V/M = 0.03
# Time range: 2014-03-07 08:34:27 to 2014-03-08 03:54:45
# Attribute pct total min max avg 95% stddev median
# ============ === ======= ======= ======= ======= ======= ======= =======
# Count 19 1484
# Exec time 25 310s 176ms 2s 209ms 241ms 79ms 189ms
# Lock time 28 2s 80us 488ms 1ms 384us 14ms 108us
# Rows sent 85 8.09M 5.58k 5.58k 5.58k 5.58k 0 5.58k
# Rows examine 25 85.66M 59.11k 59.11k 59.11k 59.11k 0 59.11k
# Rows affecte 0 0 0 0 0 0 0 0
# Rows read 25 85.66M 59.11k 59.11k 59.11k 59.11k 0 59.11k
# Bytes sent 63 490.84M 338.70k 338.70k 338.70k 338.70k 0 338.70k
# Query size 18 1.10M 774 774 774 774 0 774
# String:
# Databases название базы
# Hosts
# Last errno 0
# Users название базы
# Query_time distribution
# 1us
# 10us
# 100us
# 1ms
# 10ms
# 100ms ################################################################
# 1s #
# 10s+
# Tables
# SHOW TABLE STATUS FROM `название базы` LIKE 'jos_zoo_item'\G
# SHOW CREATE TABLE `название базы`.`jos_zoo_item`\G
# SHOW TABLE STATUS FROM `название базы` LIKE 'jos_zoo_jbzoo_index_card'\G
# SHOW CREATE TABLE `название базы`.`jos_zoo_jbzoo_index_card`\G
# EXPLAIN /*!50100 PARTITIONS*/
SELECT tIndex.e_c716cbee7b914af2a3ec05c348bbd2c8_s AS value,
tIndex.e_c716cbee7b914af2a3ec05c348bbd2c8_s AS text,
COUNT(tIndex.e_c716cbee7b914af2a3ec05c348bbd2c8_s) AS count
FROM jos_zoo_item AS tItem
INNER JOIN jos_zoo_jbzoo_index_card AS tIndex ON tIndex.item_id = tItem.id
WHERE tItem.access IN (1)
AND tItem.state = '1'
AND (tItem.publish_up = '0000-00-00 00:00:00' OR tItem.publish_up <= '2014-03-07 16:48:46')
AND (tItem.publish_down = '0000-00-00 00:00:00' OR tItem.publish_down >= '2014-03-07 16:48:46')
AND tItem.searchable = '1'
AND tItem.type = 'card'
AND tItem.application_id = '5'
AND tIndex.e_c716cbee7b914af2a3ec05c348bbd2c8_s <> ""
AND tIndex.e_c716cbee7b914af2a3ec05c348bbd2c8_s IS NOT NULL
GROUP BY tIndex.e_c716cbee7b914af2a3ec05c348bbd2c8_s\G
Подскажите в чем может быть проблема, как уменьшить нагрузку?