InnoDB +прыгающие индексы

MySQL/PostgreSQL/SQLite/Oracle/M$SQL/....

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Al
ст. прапорщик
Сообщения: 501
Зарегистрирован: 2007-10-18 13:42:48
Откуда: Тверь
Контактная информация:

InnoDB +прыгающие индексы

Непрочитанное сообщение Al » 2010-11-29 15:45:28

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, количество уникальных значений становится равно количеству записей. В чем прикол?)

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Gloft
лейтенант
Сообщения: 645
Зарегистрирован: 2008-03-09 11:32:12
Откуда: Москва

Re: InnoDB +прыгающие индексы

Непрочитанное сообщение Gloft » 2010-12-25 15:55:42


Al
ст. прапорщик
Сообщения: 501
Зарегистрирован: 2007-10-18 13:42:48
Откуда: Тверь
Контактная информация:

Re: InnoDB +прыгающие индексы

Непрочитанное сообщение Al » 2010-12-26 18:41:01

Дружище, а неужели так трудно ответить в 2-х словах? БД далеко не моя специализация, и разбираться в этом в данный момент совсем не хочется. А маны почитать и сам могу, поверь. Хоть бы конкретный раздел указал, чтоль.
Ладно, как говорится, спасибо и на том.

Gloft
лейтенант
Сообщения: 645
Зарегистрирован: 2008-03-09 11:32:12
Откуда: Москва

Re: InnoDB +прыгающие индексы

Непрочитанное сообщение Gloft » 2010-12-26 23:38:59

Я тоже не специалист в MySQL, но здравый смысл и то что написано на приведенной странице мне хватило понять, что такое вполне возможно.
Почему так происходит, я объяснить не могу.
Если хочешь почему? читай документацию http://www.innodb.com/doc/embedded_innodb-1.0/

FiL
ст. лейтенант
Сообщения: 1375
Зарегистрирован: 2010-02-05 0:21:40

Re: InnoDB +прыгающие индексы

Непрочитанное сообщение FiL » 2010-12-30 0:36:19

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 с автоинкрементом и поставь его ключом. Будет тебе счастье.

Аватара пользователя
Gamerman
капитан
Сообщения: 1723
Зарегистрирован: 2009-05-17 21:01:23
Откуда: Украина, Ужгород - Днепр
Контактная информация:

Re: InnoDB +прыгающие индексы

Непрочитанное сообщение Gamerman » 2010-12-30 12:22:02

Насколько я знаю (понимаю), в InnoDB идет хитрая обработка записей, с дырами для оптимизации. В зависимости от того как записи расположены физически эти индексы меняются. То есть, там идет подсчет еще служебных индексов. В принципе, если все хорошо работает, то забить на эти прыжки:)
Глюк глюком вышибают!