Страница 1 из 1
InnoDB +прыгающие индексы
Добавлено: 2010-11-29 15:45:28
Al
mysql обычно использую как записную книжку, не более, поэтому прошу строго не судить.
Есть база innodb, в ней таблица
Код: Выделить всё
CREATE TABLE IF NOT EXISTS `mailboxes` (
`mailbox` varchar(255) NOT NULL DEFAULT '',
`status` int(5) NOT NULL DEFAULT '0',
PRIMARY KEY (`mailbox`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Записей чуть более 2000. Засада вот в чем: в phpmyadmin "прыгает" количество уникальных значений индекса. При том достаточно быстро - при следующем обновлении страницы уже другое число.
Меняется от 1700 до 2500 (что явно больше записей ей в таблице) где-то. Если таблицу переделать на MyISAM, количество уникальных значений становится равно количеству записей. В чем прикол?)
Re: InnoDB +прыгающие индексы
Добавлено: 2010-12-25 15:55:42
Gloft
Re: InnoDB +прыгающие индексы
Добавлено: 2010-12-26 18:41:01
Al
Дружище, а неужели так трудно ответить в 2-х словах? БД далеко не моя специализация, и разбираться в этом в данный момент совсем не хочется. А маны почитать и сам могу, поверь. Хоть бы конкретный раздел указал, чтоль.
Ладно, как говорится, спасибо и на том.
Re: InnoDB +прыгающие индексы
Добавлено: 2010-12-26 23:38:59
Gloft
Я тоже не специалист в MySQL, но здравый смысл и то что написано на приведенной странице мне хватило понять, что такое вполне возможно.
Почему так происходит, я объяснить не могу.
Если хочешь почему? читай документацию
http://www.innodb.com/doc/embedded_innodb-1.0/
Re: InnoDB +прыгающие индексы
Добавлено: 2010-12-30 0:36:19
FiL
Al писал(а):mysql обычно использую как записную книжку, не более, поэтому прошу строго не судить.
Есть база innodb, в ней таблица
Код: Выделить всё
CREATE TABLE IF NOT EXISTS `mailboxes` (
`mailbox` varchar(255) NOT NULL DEFAULT '',
`status` int(5) NOT NULL DEFAULT '0',
PRIMARY KEY (`mailbox`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Записей чуть более 2000. Засада вот в чем: в phpmyadmin "прыгает" количество уникальных значений индекса. При том достаточно быстро - при следующем обновлении страницы уже другое число.
Меняется от 1700 до 2500 (что явно больше записей ей в таблице) где-то. Если таблицу переделать на MyISAM, количество уникальных значений становится равно количеству записей. В чем прикол?)
Почему - не знаю. Но то, что индекс по varchar-у для InnoDB это ОЧЕНЬ плохо - это точно. Это вообще плохо, но для InnoDB особенно. Так что добавь-ка туда какой-нить id типа int с автоинкрементом и поставь его ключом. Будет тебе счастье.
Re: InnoDB +прыгающие индексы
Добавлено: 2010-12-30 12:22:02
Gamerman
Насколько я знаю (понимаю), в InnoDB идет хитрая обработка записей, с дырами для оптимизации. В зависимости от того как записи расположены физически эти индексы меняются. То есть, там идет подсчет еще служебных индексов. В принципе, если все хорошо работает, то забить на эти прыжки:)