SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 08.02.2008 20:10:51

izstora
Участник
Зарегистрирован: 26.09.2007
Сообщений: 23

Оптимизация таблицы

Пришло письмо из службы поддержки хостинга

"Уведомляю Вас, что работой MySQL-пользователя ... создается повышенная нагрузка на сервер баз данных.
Примеры запросов:

SELECT time, path, country FROM stat WHERE ip
='1402278759' ORDER BY time DESC LIMIT 1;

SELECT time, path, country FROM stat WHERE ip
='1406740873' ORDER BY time DESC LIMIT 1;

Оптимизируйте, пожалуйста, Ваши скрипты, SQL-запросы и дайте
нам знать о результатах. Отметим, что размер Вашей базы
... составляет 80 Мб, что может вызывать
нагрузку из-за большого количества данных
получаемых/передаваемых при запросе (сейчас нагрузка может
достигать до 26%, при допустимой 2,5%)
"


У меня вопрос.
В таблице stat 717500 записей. Размер ~77Mb. Туда пишутся данные о каждой просмотренной странице.
Это что много? Или не правильно созданы индексы?
Пока пришлось отключить статистику. А это не очень приятно.

Неактивен

 

#2 08.02.2008 21:06:35

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Оптимизация таблицы

Приведите результаты след команд:
SHOW CREATE TABLE stat;
и
EXPLAN SELECT time, path, country FROM stat WHERE ip
='1402278759' ORDER BY time DESC LIMIT 1;

Неактивен

 

#3 08.02.2008 21:18:57

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Оптимизация таблицы

Возможно требуется создать индекс ALTER TABLE stat ADD KEY(ip,time), но это увеличит объем хранимой информации и замедлит добавление статистики, хотя и ускорит описанные запросы.

Хостинг часто требует оптимизации скриптов и это не всегда оправдано. В любом случае при росте нагрузки Вам придется перейти на VDS и самостоятельно управлять MySQL-сервером.

Неактивен

 

#4 09.02.2008 11:39:53

izstora
Участник
Зарегистрирован: 26.09.2007
Сообщений: 23

Re: Оптимизация таблицы

vasya написал:

Приведите результаты след команд:
SHOW CREATE TABLE stat;
и
EXPLAN SELECT time, path, country FROM stat WHERE ip
='1402278759' ORDER BY time DESC LIMIT 1;

Привожу

SHOW CREATE:
CREATE TABLE `stat` (
  `ip` int(11) NOT NULL default '0',
  `time` int(11) unsigned NOT NULL default '0',
  `diff_time` mediumint(8) unsigned NOT NULL default '0',
  `page_id` mediumint(8) unsigned NOT NULL default '0',
  `status` smallint(5) unsigned NOT NULL default '200',
  `path` varchar(255) NOT NULL default '',
  `ref_id` mediumint(8) unsigned NOT NULL default '0',
  `ref` tinyint(1) unsigned NOT NULL default '0',
  `search_ph` varchar(100) NOT NULL default '',
  `agent_id` mediumint(8) unsigned NOT NULL default '0',
  `robot` tinyint(1) unsigned NOT NULL default '0',
  `country` char(2) NOT NULL default '',
  `email` varchar(50) NOT NULL,
  KEY `time_difftime` (`time`,`diff_time`),
  KEY `diff_time_time` (`diff_time`,`time`),
  KEY `time_ip` (`time`,`ip`),
  KEY `ip` (`ip`),
  KEY `country` (`country`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251



EXPLAIN(не понял, это ли вы просили)
[id] => 1
            [select_type] => SIMPLE
            [table] => stat
            [type] => ref
            [possible_keys] => ip
            [key] => ip
            [key_len] => 4
            [ref] => const
            [rows] => 20
            [Extra] => Using where; Using filesort

Неактивен

 

#5 09.02.2008 11:46:37

izstora
Участник
Зарегистрирован: 26.09.2007
Сообщений: 23

Re: Оптимизация таблицы

rgbeast написал:

Возможно требуется создать индекс ALTER TABLE stat ADD KEY(ip,time), но это увеличит объем хранимой информации и замедлит добавление статистики, хотя и ускорит описанные запросы.

Индекс ip,time есть. См. выше. Хотя может я что-то не так понимаю. С иддексами там явно что-то не так.

rgbeast написал:

Хостинг часто требует оптимизации скриптов и это не всегда оправдано. В любом случае при росте нагрузки Вам придется перейти на VDS и самостоятельно управлять MySQL-сервером.

Статистика проработала всего три месяца, и уже такая нагрузка. Что будет с VDS через год и при увеличении посещаемости, например, в 5 раз? Тут все-таки вопрос в эффективности скрипта и бд.

Неактивен

 

#6 09.02.2008 11:48:03

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Оптимизация таблицы

Есть индекс time,ip. Индекса ip,time нет. Порядок имеет значение.

Неактивен

 

#7 09.02.2008 12:25:53

izstora
Участник
Зарегистрирован: 26.09.2007
Сообщений: 23

Re: Оптимизация таблицы

rgbeast написал:

Есть индекс time,ip. Индекса ip,time нет. Порядок имеет значение.

А что еще его добавить? Это снизит нагрузку на сервер на 20%?

Отредактированно izstora (09.02.2008 12:35:58)

Неактивен

 

#8 09.02.2008 12:50:05

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Оптимизация таблицы

izstora написал:

А что еще его добавить? Это снизит нагрузку на сервер на 20%?

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

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson