Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Запрос очень долго выполняется (ss25) 11/10/2006 - 18:15:07
      Re: Запрос очень долго выполняется (FatalQ) 12/10/2006 - 03:32:22

> Original message text:
> From: ss25 - 11/10/2006 - 18:15:07
> Subject:Запрос очень долго выполняется
> -----------------
> вот таблица
>
> CREATE TABLE `log` (
> `time` int(11) NOT NULL default '0',
> `bytesin` int(11) NOT NULL default '0',
> `bytesout` int(11) NOT NULL default '0',
> `username` varchar(20) collate latin1_general_ci NOT NULL default '',
> `source_ip` varchar(255) collate latin1_general_ci NOT NULL,
> `service` varchar(7) collate latin1_general_ci NOT NULL default '',
> `host` varchar(100) collate latin1_general_ci NOT NULL default '',
> `port` int(11) NOT NULL default '0',
> `url` text collate latin1_general_ci NOT NULL
> ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
>
> вот конфиг БД
>
> [mysqld]
> basedir="D:/xampp/mysql"
> tmpdir="D:/xampp/tmp"
> datadir="D:/xampp/mysql/data"
>
> port = 3306
> socket = mysql
>
> old-passwords
> character-set-server = latin1
> collation-server = latin1_general_ci
>
> skip-locking
> key_buffer = 16K
> max_allowed_packet = 1M
> table_cache = 32
> sort_buffer_size = 64000K
> read_buffer_size = 256000K
> read_rnd_buffer_size = 256000K
> net_buffer_length = 2K
> thread_stack = 64K
>
> вот сам запрос
>
> SELECT SUM(bytesin + bytesout) AS traf FROM log WHERE time > '$starttime' AND time < '$endtime'
>
> размер таблицы более 60 мегабайт в таблице около 500 000 записей выполняется около 15 секунд (mysql 5.0.24 Celeron 2.4 1 Gb Ram hdd 200 gb 7200 8 mb SATA) и чем больше записей тем больше задержка но после первого запроса повторный (любой другой) запрос к таблице выполняеться в пределах 2-3 секунд. можна заставить БД держать таблицы п памяти.
>


From: FatalQ - 12/10/2006 - 03:32:22
Subject:Запрос очень долго выполняется
-----------------
Создайте поле для сумарного трафика, и проиндексируЙте с ним `time`

CREATE TABLE `log` (
`time` INT UNSIGNED NOT NULL,
`bytesin` BIGINT UNSIGNED NOT NULL,
`bytesout` BIGINT UNSIGNED NOT NULL,
`bytesio` BIGINT UNSIGNED NOT NULL,
`username` varchar(20) NOT NULL default '',
`source_ip` varchar(255) NOT NULL,
`service` varchar(7) NOT NULL default '',
`host` varchar(255) NOT NULL default '',
`port` SMALLINT UNSIGNED NOT NULL,
`url` text NOT NULL,
INDEX `time_bytesio` (`time`,`bytesio`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

SELECT SUM(bytesio) FROM log WHERE time BETWEEN $starttime AND $endtime



Для 1Гб памяти больше подходит конфиг my-large.ini

key_buffer = 256M
max_allowed_packet = 1M
table_cache = 256
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size= 16M



[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
29856



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |