Основы MySQL (23) механизм хранения

1. Просмотрите механизм хранения

show engines;
# 或
show engines\G

2. Установите механизм хранения данных по умолчанию.

  • Просмотрите механизм хранения по умолчанию:
show variables like '%storage_engine%'; 
#或
SELECT @@default_storage_engine;
  • Изменить механизм хранения по умолчанию

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

SET DEFAULT_STORAGE_ENGINE=MyISAM;

Или измените my.cnfфайл:

default-storage-engine=MyISAM 
# 重启服务 
systemctl restart mysqld.service

3. Установите механизм хранения таблицы.

Механизм хранения отвечает за извлечение и запись данных в таблицу.Мы можем это сделать, 不同的表设置不同的存储引擎а это значит, что разные таблицы могут иметь разные физические структуры хранения и разные методы извлечения и записи.

3.1 Укажите механизм хранения при создании таблицы
CREATE TABLE 表名(
    建表语句; 
) ENGINE = 存储引擎名称;
3.2 Изменение механизма хранения таблицы
ALTER TABLE 表名 ENGINE = 存储引擎名称;

4. Введение в двигатель

4.1 Механизм InnoDB : механизм хранения транзакций с функцией поддержки внешнего ключа.
  • MySQL включает в себя механизм хранения InnoDB, начиная с версии 3.23.34a. 大于等于5.5之后,默认采用InnoDB引擎.
  • InnoDB — это MySQL 默认事务型引擎, предназначенный для обработки больших объемов кратковременных транзакций. Может быть обеспечена полная фиксация и откат транзакций.
  • Помимо добавления и запроса, также требуются операции обновления и удаления, поэтому следует отдать предпочтение механизму хранения InnoDB.
  • Если нет особой причины использовать другой механизм хранения, приоритет следует отдавать механизму InnoDB.
  • Структура файла данных:
    • Имя таблицы.frm хранит структуру таблицы (в MySQL8.0 объединена с именем таблицы.ibd).
    • Имя таблицы.ibd хранит данные и индексы.
  • ИнноДБ - это 为处理巨大数据量的最大性能设计.
    • В предыдущих версиях данные словаря хранились в файлах метаданных, нетранзакционных таблицах и т. д. Эти файлы метаданных теперь удалены. Например: .frm, .par, .trn, .islи .db.optт. д. больше не существуют в MySQL8.0.
  • По сравнению с механизмом хранения MyISAM, InnoDB写的处理效率差一些и будет занимать больше дискового пространства для сохранения данных и индексов.
  • MyISAM кэширует только индекс, а не реальные данные; InnoDB кэширует не только индекс, но и реальные данные, 对内存要求较高а размер памяти оказывает решающее влияние на производительность.
4.2 Механизм MyISAM: основной механизм нетранзакционного хранения
  • MyISAM предоставляет большое количество возможностей, включая полнотекстовое индексирование, сжатие, пространственные функции (ГИС) и т. д., но у MyISAM 不支持事务、行级锁、外键есть один несомненный недостаток 崩溃后无法安全恢复.
  • 5.5之前默认的存储引擎
  • Преимущество — доступ 速度快, нет требований к целостности транзакций или приложений на основе SELECT и INSERT.
  • Имеется дополнительное постоянное хранилище для статистики. Таким образом, эффективность запроса count(*) очень высока.
  • Структура файла данных:
    • Имя таблицы. Структура таблицы хранения frm
    • Имя таблицы. Данные хранилища MYD (MYData)
    • Имя таблицы. Индекс хранения MYI (MYIndex)
  • Сценарии применения: приложения только для чтения или бизнес, основанный на чтении.
4.3 Механизм архивирования: используется для архивирования данных.
4.4 Движок Blackhole : операции записи отбрасываются, а операции чтения возвращают пустой контент
4.5 Механизм CSV: при хранении данных разделяйте каждый элемент данных запятыми.
4.6 Механизм памяти: таблицы, размещенные в памяти
4.7 Механизм объединения: доступ к удаленным таблицам
4.8 Механизм слияния: управляет коллекцией таблиц, состоящей из нескольких таблиц MyISAM.
4.9 Механизм NDB: выделенный механизм хранения кластера MySQL.

5. MyISAM и InnoDB

Сравнительный элемент МойИСАМ ИнноДБ
внешний ключ не поддерживается поддерживать
дела не поддерживается поддерживать
Блокировка таблицы строк Блокировка таблицы: даже если используется одна запись, вся таблица будет заблокирована, что не подходит для операций с высокой степенью параллелизма. Блокировка строк блокирует только определенную строку во время работы и не влияет на другие строки. Она подходит для операций с высоким уровнем параллелизма.
кэш Кэшируется только индекс, а не реальные данные. Не только кэширование индекса, но и кэширование реальных данных требует большого объема памяти, а размер памяти оказывает решающее влияние на производительность.
Используйте свою собственную системную таблицу Да Н
точка фокусировки Производительность: экономьте ресурсы, потребляйте меньше, простой бизнес Транзакции: одновременная запись, транзакции, большие ресурсы.
Установка по умолчанию Да Да
Используется по умолчанию Н Да

Guess you like

Origin blog.csdn.net/zhufei463738313/article/details/130580790