SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 27.02.2009 22:08:04

Proger
Активист
Откуда: Санкт-Петербург
Зарегистрирован: 04.09.2008
Сообщений: 172

UPDATE иногда выполняется жутко долго

Не понимаю почему. В небольшой таблице размером меньше 100 КБ даже. Тип InnoDB.
Запрос: UPDATE `vizitor` SET `last` = '2009-02-27 21:56:49' WHERE `id` = 7 AND `uid` = 1 исполняется 0.01-0.02 сек
Но иногда везёт и запрос исполняется 0.001-0.0005 сек

Собственно что может быть?

Дамп для примера:


CREATE TABLE `vizitor` (
  `id` int(8) NOT NULL,
  `uid` int(8) NOT NULL,
  `name` varchar(50) NOT NULL,
  `last` datetime NOT NULL,
  KEY `id` (`id`),
  KEY `id_2` (`id`,`last`),
  KEY `id_3` (`id`,`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;

INSERT INTO `vizitor` VALUES(68, 1, 'user1', '2009-01-15 00:00:41');
INSERT INTO `vizitor` VALUES(1, 68, 'user512', '2008-01-10 10:41:36');
INSERT INTO `vizitor` VALUES(42, 68, 'makavash', '2008-12-07 23:00:02');
 

Неактивен

 

#2 27.02.2009 22:40:46

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

Re: UPDATE иногда выполняется жутко долго

Ключ `id` лишний, так как есть ключи `id_2` и `id_3` и они могут использоваться для поиска по id.

0.01 - 0.02 сек это не жутко долго, возможно, просто требуется обращение к диску. Установите innodb_flush_log_at_trx_commit=0

Неактивен

 

#3 28.02.2009 13:46:02

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: UPDATE иногда выполняется жутко долго

И innodb_buffer_pool_size / innodb_log_buffer_size smile

Неактивен

 

#4 28.02.2009 14:59:13

Proger
Активист
Откуда: Санкт-Петербург
Зарегистрирован: 04.09.2008
Сообщений: 172

Re: UPDATE иногда выполняется жутко долго

Мммм. Я только одного не понимаю у меня в my.cnf всего несколько строчек по InnoDB. То есть если их нет то значения по умолчанию ставятся.

ЗЫ заметил что тормазят не только тут UPDATE'ы, другие запросы с UPDATE тоже имеют похожее быстродействие, хотя опять же они довольно таки простые.
ЗЫЗЫ а если бы ключ `id` был бы PRIMARY, он уже не был бы лишним?

Отредактированно Proger (28.02.2009 15:02:31)

Неактивен

 

#5 28.02.2009 15:06:46

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: UPDATE иногда выполняется жутко долго

Да, если строчек нет, то ставятся значения по умолчанию.

Ключ PRIMARY был бы не лишним в смысле уникальности и кластерности. Более того, в таблице InnoDB
лучше указывать хотя бы один ключ как PRIMARY.

Неактивен

 

#6 28.02.2009 15:25:04

Proger
Активист
Откуда: Санкт-Петербург
Зарегистрирован: 04.09.2008
Сообщений: 172

Re: UPDATE иногда выполняется жутко долго

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

UPDATE'ы теперь где то 0.005-0.0008 - стало лучше хотя бы здесь. Спасибо всем.

Неактивен

 

Board footer

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