Сравнение движков баз данных MySQL - Comparison of MySQL database engines
Эта статья нужны дополнительные цитаты для проверка.Март 2010 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Это сравнение известных движков баз данных для MySQL система управления базами данных (СУБД). А ядро базы данных (или «механизм хранения») - это базовый программный компонент, который СУБД использует для создавать, читать, обновлять и удалять (CRUD) данные из база данных.
Имя | Продавец | Лицензия | Транзакционный | В активной разработке | Версии MySQL | Версии MariaDB |
---|---|---|---|---|---|---|
Архив | Oracle | GPL | Нет | да | 5.0 - настоящее время | 5.1 - настоящее время |
Ария | MariaDB | GPL | Нет | Да} | Никто | 5.1 - настоящее время |
Berkeley DB | Oracle | AGPLv3 | да | Нет | ? - 5.0 | Никто |
ЧЕРНАЯ ДЫРА | Oracle | GPL | Нет | да | 5.0 - настоящее время | 5.1 - настоящее время |
СОЕДИНЯТЬ | MariaDB | GPL | Нет | да | Никто | 10.0 - настоящее время |
CSV | Oracle | GPL | Нет | да | 5.0 - настоящее время | 5.1 - настоящее время |
Сокол | Oracle | GPL | да | Нет | ? | Никто |
Федеративный | Oracle | GPL | ? | Нет | 5.0 - настоящее время | ? |
FederatedX | MariaDB | GPL | да | Нет | Никто | ? - настоящее время |
InfiniDB | Calpont | GPL | да | Нет | Никто | Никто |
InnoDB | Oracle | GPL | да | да | 3.23 - настоящее время | 5.1 - настоящее время |
ОБЪЕМ ПАМЯТИ | Oracle | GPL | Нет | да | 3.23 - настоящее время | 5.1 - настоящее время |
Mroonga | Groonga Project | GPL | Нет | да | Никто | 10.0 - настоящее время |
MyISAM | Oracle | GPL | Нет | Нет | 3.23 - настоящее время | 5.1 - настоящее время |
MyRocks | GPLv2 | да | да | Никто | 10.2 - настоящее время | |
NDB | Oracle | GPLv2 | да | да | ? | Никто |
OQGRAPH | Oracle | GPLv2 | Нет | Нет | Никто | 5.2 - настоящее время |
S3 | MariaDB | GPL | Нет | да | Никто | 10,5 - настоящее время |
ПОСЛЕДОВАТЕЛЬНОСТЬ | MariaDB | GPL | Нет | да | Никто | 10.0 - настоящее время |
Сфинкс | Sphinx Technologies Inc. | GPL | Нет | Нет | Никто | 5.2 - настоящее время |
ПАУК | Кентоку Сиба | GPL | да | да | Никто | 10.0 - настоящее время |
TempTable | Oracle | GPL | Нет | да | 8.0 - настоящее время | Никто |
TokuDB | Percona | Модифицированная GPL | да | Нет | Никто | 5.5 - настоящее время |
XtraDB | Percona | GPL | да | да | Никто | 5.1 - 10.1 |
Сравнение InnoDB и MyISAM
- InnoDB восстанавливается после сбоя или другого неожиданного завершения работы путем воспроизведения своих журналов. MyISAM должен полностью сканировать и восстанавливать или перестраивать любые индексы или, возможно, таблицы, которые были обновлены, но не полностью сброшены на диск. Поскольку подход InnoDB - это приблизительно фиксированное время, в то время как время MyISAM растет с размером файлов данных, InnoDB предлагает большую доступность по мере увеличения размеров базы данных.
- InnoDB с innodb_flush_log_at_trx_commit, установленным в 1, очищает журнал транзакций после каждой транзакции, значительно повышая надежность.[1] MyISAM должен запускаться поверх полностью журналируемая файловая система, Такие как ext4 смонтирован с помощью data = journal, чтобы обеспечить такую же устойчивость к повреждению файлов данных. (Журнал можно поставить на SSD устройство для повышения производительности MyISAM, аналогично, журнал InnoDB может быть помещен в файловую систему без ведения журнала, такую как ext2 работает на SSD для аналогичного повышения производительности. В любом случае надежность не приносится в жертву.)
- InnoDB можно запустить в режиме, в котором он имеет более низкую надежность, но в некоторых случаях более высокую производительность. Установка innodb_flush_log_at_trx_commit в 0 переключает в режим, в котором транзакции не фиксируются на диске до того, как управление будет возвращено вызывающей стороне. Вместо этого очистка диска происходит по таймеру.[1]
- InnoDB автоматически группирует несколько одновременных вставок и одновременно сбрасывает их на диск.[2] MyISAM полагается на кеш блоков файловой системы для кэширования операций чтения строк данных и индексов, в то время как InnoDB делает это внутри самого движка, комбинируя кеши строк с кешами индексов.[3]
- InnoDB будет хранить строки в первичный ключ заказ, если есть, иначе сначала уникальный ключ порядок. Это может быть значительно быстрее, если выбран ключ, подходящий для обычных операций.[нужна цитата ] Если нет первичного ключа или уникального ключа, InnoDB будет использовать сгенерированный внутри уникальный целочисленный ключ и будет физически хранить записи примерно в порядке вставки, как это делает MyISAM. Как вариант, для достижения того же эффекта можно использовать поле первичного ключа с автоинкрементом.
- InnoDB предоставляет обновляемый LZW сжатое хранилище страниц как для данных, так и для индексов. Сжатые таблицы MyISAM не могут быть обновлены.[4]
- При работе полностью КИСЛОТА -совместимые режимы, InnoDB должен выполнять сброс на диск по крайней мере один раз за транзакцию, хотя он будет объединять сбросы для вставок из нескольких соединений. Для обычных жестких дисков или массивов это накладывает ограничение примерно на 200 транзакций обновления в секунду. Для приложений, требующих более высокой скорости транзакций, потребуются дисковые контроллеры с кэшированием записи и резервным аккумулятором, чтобы поддерживать целостность транзакций. InnoDB также предлагает несколько режимов, которые уменьшают этот эффект, что, естественно, приводит к потере гарантий целостности транзакций, хотя при этом сохраняет большую надежность, чем MyISAM. MyISAM не имеет этих накладных расходов, но только потому, что он не поддерживает транзакции.
- MyISAM использует блокировку на уровне таблицы при обновлении и удалении любой существующей строки с возможностью добавления новых строк вместо блокировки и вставки их в свободное пространство. InnoDB использует блокировку на уровне строк. Для больших приложений баз данных, в которых часто обновляется много строк, блокировка на уровне строк имеет решающее значение, поскольку одна блокировка на уровне таблицы значительно снижает параллелизм в базе данных.
- И InnoDB, и MyISAM поддерживают полнотекстовый поиск, с InnoDB, получившим поддержку полнотекстового индекса в MySQL 5.6.4,[5] но результаты могут заметно отличаться.[6]
Рекомендации
- ^ а б Справочное руководство по MySQL 5.5 - Параметры запуска InnoDB и системные переменные
- ^ "Справочное руководство по MySQL 5.5 - Групповая фиксация InnoDB". Архивировано из оригинал на 2011-11-04. Получено 2011-10-08.
- ^ "Справочное руководство MySQL 5.5 - Механизм хранения InnoDB". Получено 28 мая 2015.
- ^ Справочное руководство по MySQL 5.5 - myisampack - Создание сжатых таблиц MyISAM, доступных только для чтения
- ^ «Изменения в MySQL 5.6.4 (2011-12-20, Milestone 7)». Oracle. 12 декабря 2011 г.
- ^ "Полнотекстовый поиск InnoDB в MySQL 5.6: Часть 2, Запросы!". Блог о производительности MySQL. 4 марта 2013 г.