пропадают index'ы и FULLTEXT :(

  • Автор темы Pietrovich
  • Дата начала

Pietrovich

Guest
пропадают index'ы и FULLTEXT :(

столкнулся с проблемой... причем скорее настройки, а не чего-то другого... в общем я просто теряюсь...

индексы тупо пропадают после выполнения ЛЮБОГО запроса...
т.е. после шаманства с optimize table, repair table и иже с ними индекс востанавливается, но после любого, даже самого простого select'а они опять все кроме primary дропаются :(

с fulltext вообще какая-то хиромантия, никак не могу осознать поледовательность кликов в MyAdmin'е, но он появляется крайне редко, и тоже после первого match уходит в историю :(

MySQL 4.0.13
PHP Version 4.2.3
отлов глюков и диагностика через MyAdmin 2.5.2-rc2

я в полном отчаянии...

довесок:
только что посмотрел
в таблице всего 3 индекса,
primary [29 эл-в],
index (INT) [29 эл-в],
fulltext [0 эл-в]

смотрю на файлы таблицы:
данных 3к
индекс 9к
но при запрос с использованием match приводит к тому, что
все индексы кроме primary доропаются, хотя размеры файлов с индексом и данными на меняются...
?!
 

Апельсин

Оранжевое создание
проверь все используя клиента mysql. скорее всего это глюки MyAdmin.
 

Pietrovich

Guest
проверил. в общем результат таков:
для любой таблицы из любой БД (есс-но где есть FULLTEXT индексы)

SHOW INDEX FROM ...;
показывает наличие строк только в PRIMARY, у всех остальных Cardinality NULL

после optimize появляются сторки в индексах на цифры и на tinytext, а вот FULLTEXTы остются NULL хотя размер файла с индексами растет.

если дропнуть FULLTEXTы, то в SHOW INDEX FROM ...; визуально ничего не меняется, зато уменьшается(значительно, в много раз) размер файла с индексами...

кстати выяснил, что индексы пропадают только после insert, update, delete а не как я раньше думал после любого запроса...


машина на которой глючит, это мой офисный тестовый сервантик (стоит на Mandrake), чисто для меня, больше к нему доступ никто не имеет, поэтому попроставлял на все что MySQL касается 777...
не помогает :(

причем когда у меня 3 с мелочью стоял таких проблем не было, а 4ку ставил для math against IN BOOLEAN MODE...
и вот те на, грабли!..
 

Апельсин

Оранжевое создание
> а вот FULLTEXTы остются NULL

у полнотекстового индекса природа другая.

> визуально ничего не меняется

не меняются числовые значения для остальных индексов или SHOW INDEX выводит уже удаленные полнотекстовые индексы тоже?

> индексы пропадают только после insert, update, delete

они не должны пропадать, и у меня они не пропадают.

это вы из консольного клиенты тестировали? какая версия MySQL сервера?
 

Pietrovich

Guest
> у полнотекстового индекса природа другая.
это я понимаю... но не NULL же Cardinality должно быть
help: Cardinality - Количество уникальных значений в индексе.

>не меняются числовые значения для остальных индексов или SHOW INDEX выводит уже удаленные полнотекстовые индексы тоже?
как до удаления индекса, так и после Cardinality == NULL

>они не должны пропадать, и у меня они не пропадают.
дак, я понимаю что не должны :) потому и спрашиваю...

>это вы из консольного клиенты тестировали? какая версия MySQL сервера?

OS: Mandrake 9
MySQL 4.0.13
тестирую из под шела, запуском консольного mysql

d общем проблема не ПХП а МуСКЛа, поэтому скорее всего примйдется идти на форумы по чистому МуСКЛ...
кстати, хороший форум не посоветуете? а то яндлекс много че найдет, а пока по всем походиш, разберешся "ху из ху" ...
 

Апельсин

Оранжевое создание
> это я понимаю... но не NULL же Cardinality должно быть
> help: Cardinality - Количество уникальных значений в индексе.

я в курсе что это такое, но cardinality для полнотекстового поиска не вычисляется, о том вам и говорю.

> тестирую из под шела, запуском консольного mysql

пример в студию.
 

Pietrovich

Guest
блин. долбаная хиромантия.
вчера инсерт убивал индекс, а сегодня, когда повторял ту-же последовательность действий для "текстового скриншота" индексы перестали пропадать ?!

более того, заработал match against...
PHP:
  SELECT  * FROM  `publisher_info` WHERE  MATCH (  `about_golova`  ) AGAINST (  'Желонкина' ) ;
....
1 row in set (0.00 sec)
вот только explain смущает

PHP:
explain sELECT  * FROM  `publisher_info` WHERE  MATCH (  `about_golova`  ) AGAINST (  'БОФЙЧЙТХУ' ) ;
+----------------+----------+---------------+--------------+---------+------+------+-------------+
| table          | type     | possible_keys | key          | key_len | ref  | rows | Extra       |
+----------------+----------+---------------+--------------+---------+------+------+-------------+
| publisher_info | fulltext | about_golova  | about_golova |       0 |      |    1 | Using where |
+----------------+----------+---------------+--------------+---------+------+------+-------------+
1 row in set (0.00 sec)
но то, что заработало. это позитив :D

в общем послежу за ним, если глюк повторится, тогда и пример пришлю...
 

Pietrovich

Guest
ну... как-то key_len смущает... 0 оно ведь не положительное число...
 

Апельсин

Оранжевое создание
имхо, это тоже относиться к специфике полнотекстового индекса.
 
Сверху