2009-06-13 3 views
1

иногда я получаю сообщение об ошибке «таблица отмечена как поврежденная и восстанавливаемая». что DB (таблицы) использует MyISAM. недавно это продолжается. что может быть причиной? в последнее время я уверен, выполнение пакетной вставкиТаблицы MyISAM, получаемые с повреждением

INSERT INTO table (..., ..., ...) VALUES (...), (...), (...) ...

и он просто висел. или занял очень много времени, чтобы закончить это, кажется, повешен ко мне. на следующий день, когда я проверил, таблица снова была повреждена. когда я пытаюсь использовать mysqlcheck -r, он сказал, что все таблицы в порядке, когда он достиг этой «коррумпированной» таблицы, которую он повесил там снова ...

поэтому, что я могу сделать, чтобы предотвратить это. и каковы могут быть причины. БД размещено сторонней стороной, как я могу ее отладить?

- это InnoDB надежный двигатель для использования? Я слышал, что MyISAM работает быстрее, но другие говорят, что InnoDB также может быть быстрым, но для его оптимизации требуется больше возможностей. могу ли я заключить, что InnoDB является чем-то более надежным, но abit более медленным в целом даже с оптимизацией?

ответ

0

ОК, поэтому проблема была в db компании, превышающей пространство для хранения, разрешенное хостинговой компанией. так что, по-видимому, никто не сказал компании, что они превысили использование ... паршивый хозяин, я думаю.

Кстати, theres no way mysql мог бы знать об этом?

+0

Спасибо, вот за что пойти с InnoDB, даже если вставки InnoDB в 2 раза медленнее, а счетчик (*) тоже медленный. (Считывание похоже) –

3

Если таблицы получить коррумпированные, вы можете использовать команду ремонта таблицы, чтобы исправить их:

REPAIR TABLE table; 

При запуске затсЫс пока сервер все еще работает (и вставки/выбирает ударяют таблицу), его может быть то, что искажает ваши таблицы. Большинство проблем с коррупцией, с которыми я сталкиваюсь, - это попытки сделать что-то за пределами сервера (копирование файлов и т. Д.), Пока он все еще работает.

InnoDB работает медленнее для баз данных только для чтения, поскольку у него есть функции (совместимость с ACID, блокировка на уровне строк), которые MyISAM не учитывает. Однако, если вы делаете смесь чтений и записей, в зависимости от смеси, InnoDB может предложить серьезные улучшения производительности, потому что не нужно блокировать всю таблицу для записи. Вы также не сталкиваетесь с проблемами коррупции.

+0

теперь, когда я пытаюсь выполнить запросы, такие как select, check table или mysqlcheck -r, даже показать таблицу create, она просто будет там находиться. что я могу сделать? – iceangel89

+0

Проводили ли вы ремонт? Он все еще работает (вы можете сделать «show processlist»). Скорее всего, вы не можете получить доступ к таблице или ее метаданным до тех пор, пока она не будет завершена (у нее есть блокировка записи). Ремонт может занять некоторое время на большом столе, он должен перестроить индексы. –

Смежные вопросы