Что такое двигатели баз данных MySQL?

Я огляделся и обнаружил, что некоторые из движков MySQL являются innodb и MyISAM. Возможно, их немного. Мой вопрос в том, что это за базы данных?

В чем разница между разными MySQL-моделями? И что более важно, как мне решить, какой из них использовать?

Ответ 1

mysql> SHOW ENGINES;
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine     | Support | Comment                                                        | Transactions | XA   | Savepoints |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB     | YES     | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| BLACKHOLE  | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| CSV        | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| FEDERATED  | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| ARCHIVE    | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance         | NO           | NO   | NO         |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+

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

Ответ 2

MyISAM и InnoDB являются наиболее часто используемыми двигателями.

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

Но вы можете использовать лучшее из обоих и создавать таблицы с разными системами хранения. Некоторые программы (WordPress, я думаю) используют Inno для большинства данных, таких как отношения между страницами, версиями и т.д. Записи для сообщений содержат идентификатор, который ссылается на запись в отдельной таблице контента, которая использует MyISAM. Таким образом, содержимое сохраняется в таблице с лучшими возможностями поиска, тогда как большинство других данных хранятся в таблицах, которые обеспечивают целостность данных.

Если бы я был вами, я бы выбрал Inno, потому что он самый надежный. Используйте только MyISAM для определенных целей, если вам нужно.

Вы можете настроить свою базу данных на использование InnoDB по умолчанию при создании новых таблиц.

Ответ 3

Двигатели хранения - это компоненты MySQL, которые обрабатывают операции SQL для разных типов таблиц. InnoDB является стандартным (для v5.7) и большинством механизмов хранения общего назначения. Механизмы хранения MySQL включают в себя как те, которые обрабатывают таблицы безопасные транзакции, и те, которые обрабатывают таблицы без транзакций.

Поддерживаемые MySQL системы хранения

  • InnoDB: InnoDB - это механизм безопасности, совместимый с транзакцией (ACID) для MySQL, который имеет фиксацию, откат и возможности аварийного восстановления для защиты пользовательских данных. Блокировка на уровне строк в InnoDB (без повышения до более крупных блокировок) и последовательных неблокирующих чтения в Oracle-стиле увеличивает многопользовательский concurrency и производительность. InnoDB хранит пользовательские данные в кластерных индексах для уменьшения ввода-вывода для общих запросов на основе первичных ключей. Для обеспечения целостности данных InnoDB также поддерживает ограничения ссылочной целостности FOREIGN KEY. Для получения дополнительной информации о InnoDB см. Главу 14 "Механизм хранения InnoDB".

  • MyISAM: эти таблицы имеют небольшой след. Блокировка на уровне таблиц ограничивает производительность при работе с чтением/записью, поэтому она часто используется в рабочих нагрузках только для чтения или чтения, в конфигурациях веб-хранилищ и хранилищ данных.

  • Memory: хранит все данные в ОЗУ для быстрого доступа в средах, требующих быстрого поиска некритических данных. Этот двигатель ранее назывался двигателем HEAP. Его варианты использования уменьшаются; InnoDB с областью памяти буферного пула обеспечивает универсальный и надежный способ хранения большинства или всех данных в памяти, а NDBCLUSTER обеспечивает быстрый поиск ключевых значений для огромных распределенных наборов данных.

  • CSV: его таблицы - это действительно текстовые файлы с разделителями-запятыми. Таблицы CSV позволяют импортировать или удалять данные в формате CSV, обмениваться данными со сценариями и приложениями, которые читают и записывают этот формат. Поскольку таблицы CSV не индексируются, вы обычно храните данные в таблицах InnoDB во время нормальной работы и используете только таблицы CSV на этапе импорта или экспорта.

  • Archive: Эти компактные, неиндексированные таблицы предназначены для хранения и извлечения большого количества редко упоминаемых исторических, архивных, или информацию аудита безопасности.

  • Blackhole: механизм хранения Blackhole принимает, но не сохраняет данные, подобные устройству Unix/dev/null. Запросы всегда возвращают пустой набор. Эти таблицы могут использоваться в конфигурациях репликации, где инструкции DML отправляются на подчиненные серверы, но главный сервер не сохраняет свою собственную копию данных.

  • NDB (также известный как NDBCLUSTER): этот кластерный механизм базы данных особенно подходит для приложений, требующих максимально возможной степени безотказной работы и доступность.

  • Merge: позволяет DBA или разработчику MySQL логически группировать ряд идентичных таблиц MyISAM и ссылаться на них как на один объект, Хорошо подходит для сред VLDB, таких как хранилище данных.

  • Federated: предлагает возможность связывать отдельные серверы MySQL для создания одной логической базы данных со многих физических серверов. Очень хорошо подходит для распределенных сред или серверов данных.

  • Example: этот механизм служит примером в исходном коде MySQL, который иллюстрирует, как начать писать новые механизмы хранения. Это в первую очередь интерес для разработчиков. Механизм хранения - это "заглушка", которая ничего не делает. Вы можете создавать таблицы с этим движком, но никакие данные не могут быть сохранены в них или извлечены из них.

Вы не ограничены использованием одного и того же механизма хранения для всего сервера или схемы. Вы можете указать механизм хранения для любой таблицы. Например, приложение может использовать в основном таблицы InnoDB с одной таблицей CSV для экспорта данных в электронную таблицу и несколько таблиц MEMORY для временных рабочих областей.

Ссылка: 1 2

введите описание изображения здесь

Ответ 4

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

Механизм MERGE - чрезвычайно эффективный способ запроса данных из нескольких одинаково определенных таблиц. Механизм MEMORY - лучший способ выполнить большое количество сложных запросов на данных, которые были бы неэффективны для поиска на основе диска. CSV-движок - отличный способ экспортировать данные, которые можно использовать в других приложениях. BDB отлично подходит для данных, которые имеют уникальный ключ, к которому часто обращаются.

В этом изображении представлен обзор некоторых механизмов хранения, поставляемых с MySQL:

Ответ 5

Механизм хранения - это программный модуль, используемый системой управления базами данных для создания, чтения, обновления данных из базы данных. В MySQL существует два типа движков хранения: транзакционный и не транзакционный. Для MySQL 5.5 и более поздних версий механизм хранения по умолчанию - InnoDB. Механизм хранения по умолчанию для MySQL до версии 5.5 был MyISAM. Выбор правильного механизма хранения является важным стратегическим решением, которое повлияет на будущее развитие. В этом уроке мы будем использовать механизмы хранения MyISAM, InnoDB, Memory и CSV. Если вы новичок в MySQL и изучаете систему управления базами данных MySQL, то это не вызывает большого беспокойства. Если вы планируете создание базы данных, то ситуация становится более сложной. Вы можете прочитать здесь: http://zetcode.com/databases/mysqltutorial/storageengines/

Ответ 6

Возможно, вы получите больше информации здесь: https://en.wikipedia.org/wiki/Database_engine

Механизм базы данных (или механизм хранения) является базовым программным компонентом, который использует система управления базами данных (СУБД) для создания, чтения, обновления и удаления (CRUD) данных из базы данных. Большинство систем управления базами данных включают в себя собственный интерфейс прикладного программирования (API), который позволяет пользователю взаимодействовать с их базовым движком, не проходя через пользовательский интерфейс СУБД.