почему бьются таблицы?

Vadimka

Новичок
почему бьются таблицы?

когдато видел такую тему, но щас немогу найти, дайте линк плиз...

-~{}~ 30.09.05 22:59:

а вот и сама табличка, может кто подскажет почему она бьется, использование в основном инзерты, редко удаления...

CREATE TABLE `photocoment` (
`i` int(11) NOT NULL auto_increment,
`idkto` int(6) NOT NULL default '0',
`idkomu` int(6) NOT NULL default '0',
`coment` varchar(255) NOT NULL default '',
`reply` varchar(255) NOT NULL default '',
`privat` tinyint(1) NOT NULL default '0',
`dat` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
`ip2` int(11) NOT NULL default '0',
PRIMARY KEY (`i`),
KEY `idkto` (`idkto`),
KEY `idkomu` (`idkomu`),
KEY `reply` (`reply`),
KEY `coment2` (`coment`),
KEY `privat` (`privat`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=87091 ;
 

Vadimka

Новичок
ForJest когда очередной раз побъется таблица я тебе пришлю дословно...

-~{}~ 01.10.05 00:03:

вот кстати и месаж:
Can't open file: 'photocoment.MYI' (errno: 145)
 

Steamroller

Новичок
Vadimka, это глюк MyISAM, называется Index corruption. Причины самые разные могут быть, разработчики в принципе признают, что есть невыловленные глюки там еще.
По идее можно попробовать принять такие меры:
1) Если под FreeBSD5 - собрать без LinuxThreads
2) Собрать с меньшей оптимизацией (-O0)
3) Вырубить delay_key_writes (если оно включено)
4) Вырубить INSERT DELAYED (путем установки max_delayed_threads=0, для приложений это прозрачно)
5) Сконвертить таблицу, которая рушится, в формат InnoDB. По идее у тебя FULLTEXT индекса нету, так что конвертация тоже прозрачно для приложений пройдет.
6) Забить. :) Данные не теряются при разрушении индекса, так что можно поставить в my.cnf опцию:
myisam_recover = BACKUP,FORCE
, поставить побольше myisam_sort_buffer_size (если память позволяет - размером с файлы MYD+MYI рушащейся таблицы). Будет чиниться на лету автоматом, ну правда запрос, который на это наткнется, будет тормозить.

-~{}~ 01.10.05 00:31:

Еще кстати table_cache можно поменьше поставить, типа 10. Чтоб он таблицы открытыми не держал все время.
 
Сверху