InnoDB

макс. диск: 64Тб

полная поддержка транзакций (4 уровня изоляции)

блокировка записи/строк (не таблицы), два вида блокировок (SHARED, EXCLUSIVE)

полнотекстовый индекс: нет

безопасная для транзакций

индексы кластеризуются для «типичных запросов»

поддержка целостности (внешние ключи)

может использоваться на ОС с ограниченным размером файла

множество настроек для оптимизации

позволяет использовать Raw Disk для таблиц в обход ФС

по умолчанию включен AUTOCOMMIT (SET autocommit=1)

автоматически детектит дэдлоки (deadlocks)

Движок был разработан специально для больших таблиц. Разработчики заявляют, что InnoDB — самый быстрый из всех известных движков для БД основанных на дисках (множественные тесты это подтверждают)

Советы/Рекомендации

SELECT COUNT(*) FROM table работает гораздо медленнее, чем MyISAM — создавайте триггеры если нужно (COUNT, SUM, AVG, etc)

бэкап простым копирование файлов невозможен

mysqldump работает медленно, для бэкапа используйте InnodDb Hot Backup

следите за индексами, выгода InnoDB теряется, если для запросов нет индексов

Рекомендации: высоконагруженные сайты, финансовые транзакции

XtraDB

Восстановление таблиц

ibdata1: By default all data and indexes for all tables/databases is stored in a single, shared file: ibdata1. idbata1 does not shrink. If rows are deleted, space will be reclaimed by new rows, but the file will only grow in size.

ib_logfile0 and ib_logfile1: Redo log files to recover lost data if MySQL is not shutdown properly.

tablename.frm: Each table has a small *.frm file in the database-specific directory which stores the table definition.

Этапы восстановление

Create empty InnoDB tablespace (remove existing ibdata1, ib_logfile* and start MySQL).

Enable innodb_file_per_table

Create tables you want to connect

Compile ibdconnect from Percona InnoDB Recovery Tool and run ./ibdconnect -o ibdata1 -f t1.ibd -d <your database> -t <table name, t1 in this case> for each table.

Then fix checksums in ibdata1 as described in the post

Copy new ibdata1 and all your *.ibd files to the datadir.

Start MySQL and take a dump of the tables.