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