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

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

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

6 ответов


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-нет.


MySQL Storage engines handle transaction-safe таблицы и nontransaction-safe таблицы тоже.

MySQL Двигатели Хранения

  1. InnoDB

    • MySQL механизм хранения по умолчанию (для v5.7) и большинств общецелевой двигатель хранения.
    • transaction-safe (Acid совместимый) двигатель хранения
    • обеспечивает фиксацию, откат и аварийное восстановление возможности
    • хранит кластеризованные индексы данных для уменьшения ввода-вывода
    • поддерживает ограничения внешнего ключа
  2. MyISAM

    • дает блокировку уровня таблицы
    • наиболее полезно только для чтения или чтения в основном рабочих нагрузок в конфигурации веб-и хранилища данных.
    • хорош для таблиц с небольшим след
    • также известный как двигатель куча.
    • все данные, хранящиеся в ОЗУ
    • хорошо для сред, которые требуют быстрого поиска некритических данных.
  3. CSV-файла

    • таблицы представляют собой текстовые файлы со значениями, разделенными запятыми. (Я. e CSV)
    • хорошо импортировать в CSV формат
    • легко обмениваться данными со скриптами и приложениями в формате CSV.
    • таблицы не индексированы
    • полезно на этапах импорта или экспорта
  4. архиве

    • таблицы компактны и unindexed
    • предназначен для хранения и извлечения исторических, архивных, или аудит данные
  5. файлы

    • принимает данные, но не хранит данные
    • запросы всегда возвращают пустой набор
    • полезно в конфигурациях репликации (здесь операторы DML отправляются на подчиненные серверы, но главный сервер не хранит данные.)
  6. NDB

    • также известный как NDBCLUSTER
    • кластеризованный компонент database engine
    • полезно для приложений, которые требуют высокой надежности и высокой доступности.
  7. слияние

    • полезно для логической группировки ряда одинаковых таблиц MyISAM
    • хорошо для сред VLDB, таких как хранилище данных.
  8. федеративных

    • обеспечивает возможность соединить отдельные серверы MySQL, чтобы создать одну логическую базу данных с физических серверов
    • хорошо для распределенных или данных mart сред.
  9. пример

    • "заглушка", которая ничего не делает
    • только таблицы могут быть созданы
    • никакие данные не могут быть сохранены в них или извлечены

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

ссылки:

следующее сравнение из официального документа Для MySQL. enter image description here


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

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

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

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

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


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

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

This Image provides an overview of some storage engines provided with MySQL:


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

для MySQL 5.5 и позже, механизм хранения по умолчанию InnoDB. Механизм хранения по умолчанию для MySQL до версии 5.5 был MyISAM. Выбор правильного механизма хранения является важным стратегическим решением, которое повлияет на будущее развитие. В в этом уроке мы будем использовать MyISAM, InnoDB, память и CSV-накопители. Если вы новичок в MySQL, и вы изучаете систему управления базами данных MySQL, то это не очень беспокоит. Если вы планируете производственную базу данных, то все становится более сложным.

вы можете прочитать больше здесь:http://zetcode.com/databases/mysqltutorial/storageengines/


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

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