LINUX.ORG.RU

История изменений

Исправление firkax, (текущая версия) :

чтобы этого избегать

Чтобы такого избежать - помогут только бекапы. Отличие MyISAM от InnoDB тут только в одном: при глобальном сбое системы во время перезаписи данных первый может в итоге оказаться и без старых и без новых, а второй хоть какие-то да сохранит. И то, даже против него можно придумать достаточно агрессивный и непродуманный writeback-кеш на уровне дисков, что данные таки потеряются (а чинить innodb-таблицу, которая всё-таки сломалась - намного муторнее, ведь они «никогда не ломаются» и инструментов для починки почти нет, а движок иногда, вместо репорта о проблемах в таблице, просто сегфолтится). Те же данные, которые в перезаписи не участвуют, и так и так останутся целыми - ну может индекс побьётся, но repair table его пересоберёт как будто ничего не было.

что если юзаешь MyISAM один на своей виртуалке

А вот и нет. На виртуалке с базой на меньше 1гб все repair-ы пройдут за меньше 15 минут, и такой даунтайм, опять же для никому не известной виртуалки, будет совсем не критичным, равно как и потеря, например, какого-нить недавно (1 мин) оставленного коммента к фотке. Зато MyISAM работает местами в разы быстрее и не надо тратиться на железо. А вот для крупного проекта (с базой 1тб) и база больше - дольше repair, и требование к аптайму выше (простой в 1 минуту уже может быть плохо).

Но крупному проекту, вместо того чтобы использовать InnoDB, есть уже много других вариантов в виде того же постгреса. И даже в рамках mysql-форков есть например aria.

Исходная версия firkax, :

чтобы этого избегать

Чтобы такого избежать - помогут только бекапы. Отличие MyISAM от InnoDB тут только в одном: при глобальном сбое системы во время перезаписи данных первый может в итоге оказаться и без старых и без новых, а второй хоть какие-то да сохранит. И то, даже против него можно придумать достаточно агрессивный и непродуманный writeback-кеш на уровне дисков, что данные таки потеряются. Те же данные, которые в перезаписи не участвуют, и так и так останутся целыми - ну может индекс побьётся, но repair table его пересоберёт как будто ничего не было.

что если юзаешь MyISAM один на своей виртуалке

А вот и нет. На виртуалке с базой на меньше 1гб все repair-ы пройдут за меньше 15 минут, и такой даунтайм, опять же для никому не известной виртуалки, будет совсем не критичным, равно как и потеря, например, какого-нить недавно (1 мин) оставленного коммента к фотке. Зато MyISAM работает местами в разы быстрее и не надо тратиться на железо. А вот для крупного проекта (с базой 1тб) и база больше - дольше repair, и требование к аптайму выше (простой в 1 минуту уже может быть плохо).

Но крупному проекту, вместо того чтобы использовать InnoDB, есть уже много других вариантов в виде того же постгреса. И даже в рамках mysql-форков есть например aria.