Сравнение движков баз данных MySQL

редактировать

Это сравнение известных движков баз данных для MySQL системы управления базами данных (СУБД). механизм базы данных (или «механизм хранения») - это базовый программный компонент, который СУБД использует для создания, чтения, обновления и удаления (CRUD) данных из a база данных.

ИмяПоставщикЛицензияТранзакционная В стадии активной разработки
Архив OracleGPLNoДа
Aria MariaDB GPLNoДа
Berkeley DB OracleAGPLv3 ?Нет
CSV OracleGPLNoДа
Сокол OracleGPLДаНет
Federated OracleGPL?Нет
InfiniDB CalpontGPLДаДа
InnoDB OracleGPLДаДа
MyISAM OracleGPLNoНет
MyRocks FacebookGPLv2ДаДа
NDB OracleGPLv2ДаДа
TokuDB TokuTekМодифицированная GPLДаНет
XtraDB PerconaGPLДаДа

Сравнение между InnoDB и MyISAM

  1. InnoDB восстанавливается после сбоя или другого неожиданного sh utdown путем воспроизведения его журналов. MyISAM должен полностью сканировать и восстанавливать или перестраивать любые индексы или, возможно, таблицы, которые были обновлены, но не полностью сброшены на диск. Поскольку подход InnoDB - это приблизительно фиксированное время, в то время как время MyISAM растет вместе с размером файлов данных, InnoDB предлагает большую доступность по мере увеличения размеров базы данных.
  2. InnoDB с innodb_flush_log_at_trx_commit, установленным на 1, очищает журнал транзакций после каждого транзакция, значительно повышающая надежность. MyISAM должен запускаться поверх полностью журналируемой файловой системы, такой как ext4, смонтированной с data = journal, чтобы обеспечить такую ​​же устойчивость к повреждению файлов данных. (Журнал может быть помещен на устройство SSD для повышения производительности MyISAM, аналогично журнал InnoDB может быть размещен в файловой системе без ведения журнала, такой как ext2, работающей на SSD, для аналогичное повышение производительности. Надежность не приносится в жертву ни в том, ни в другом случае.)
  3. InnoDB может работать в режиме, в котором он имеет более низкую надежность, но в некоторых случаях более высокую производительность. Установка innodb_flush_log_at_trx_commit в 0 переключает в режим, в котором транзакции не фиксируются на диске до того, как управление будет возвращено вызывающей стороне. Вместо этого очистка диска происходит по таймеру.
  4. InnoDB автоматически группирует вместе несколько одновременных вставок и сбрасывает их на диск одновременно. MyISAM полагается на кеш блоков файловой системы для кэширования операций чтения строк данных и индексов, в то время как InnoDB делает это внутри самого движка, комбинируя кеши строк с кешами индексов.
  5. InnoDB будет хранить строки в первичном ключ порядок, если присутствует, иначе первый уникальный ключ порядок. Это может быть значительно быстрее, если ключ выбран так, чтобы он подходил для обычных операций. Если нет первичного ключа или уникального ключа, InnoDB будет использовать внутренний уникальный целочисленный ключ и будет физически хранить записи примерно в порядке вставки, как это делает MyISAM. В качестве альтернативы, поле первичного ключа с автоинкрементом может использоваться для достижения того же эффекта.
  6. InnoDB предоставляет обновляемое LZW сжатое хранилище страниц как для данных, так и для индексов. Сжатые таблицы MyISAM не могут быть обновлены.
  7. При работе в полностью ACID -совместимых режимах InnoDB должен выполнять сброс на диск по крайней мере один раз за транзакцию, хотя он будет объединять сбросы для вставок от нескольких подключений. Для обычных жестких дисков или массивов это накладывает ограничение примерно на 200 транзакций обновления в секунду. Для приложений, требующих более высокой скорости транзакций, потребуются дисковые контроллеры с кэшированием записи и резервным аккумулятором, чтобы поддерживать целостность транзакций. InnoDB также предлагает несколько режимов, которые уменьшают этот эффект, что, естественно, приводит к потере гарантий целостности транзакций, хотя при этом сохраняет большую надежность, чем MyISAM. MyISAM не имеет этих накладных расходов, но только потому, что он не поддерживает транзакции.
  8. MyISAM использует блокировку на уровне таблицы при обновлениях и удаляет любую существующую строку с возможностью добавления новых строк вместо блокировки и вставив их в свободное место. InnoDB использует блокировку на уровне строк. Для больших приложений баз данных, где часто обновляется много строк, блокировка на уровне строк имеет решающее значение, потому что единственная блокировка на уровне таблицы значительно снижает параллелизм в базе данных.
  9. И InnoDB, и MyISAM поддерживают полнотекстовый поиск, при этом InnoDB получает поддержку полнотекстового индекса в MySQL 5.6.4, но результаты могут заметно отличаться.

Ссылки

Внешние ссылки

Последняя правка сделана 2021-05-15 08:01:40
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте