Расположение базовых точек знаний MySQL-Механизм хранения
0. Просмотрите механизм хранения, поддерживаемый MySQL
Его можно использовать в клиенте MySQL показывать движки;
Команды позволяют просматривать движки, поддерживаемые MySQL:
mysql> show engines; +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO | | MyISAM | YES | MyISAM storage engine | NO | NO | NO | | CSV | YES | CSV storage engine | NO | NO | NO | | ARCHIVE | YES | Archive storage engine | NO | NO | NO | | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO | | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ 9 rows in set (0.06 sec)
1. Двигатель InnoDB
InnoDB-это механизм хранения данных MySQL по умолчанию и наиболее важный и широко используемый механизм хранения данных. Производительность Innodb и функции автоматического восстановления после сбоев делают его популярным среди требований к хранилищу без транзакций. Двигателям InnoDB следует уделять приоритетное внимание, если только нет особых причин для использования других механизмов хранения.
Характеристики InnoDB
- Поддержка транзакций.
- Поддерживает ограничения внешнего ключа.
- Поддерживает механизм блокировки на уровне строк.
- Поддержка восстановления безопасности после сбоя.
- Реальное горячее резервное копирование поддерживается с помощью некоторых механизмов и инструментов.
- Выделенный пул буферов создается в основной памяти для кэширования данных и индексирования, поэтому таблицам InnoDB требуется больше памяти и места для хранения.
- InnoDB-это агрегированный индекс. Файлы данных привязаны к индексу. У него должен быть первичный ключ. Очень эффективно индексировать с помощью первичного ключа. Но вспомогательный индекс необходимо запросить дважды, сначала к первичному ключу, а затем к данным через первичный ключ. Поэтому первичный ключ не должен быть слишком большим, потому что первичный ключ слишком велик, а другие индексы будут слишком большими.
- InnoDB не сохраняет определенное количество строк в таблице и выполняет
выберите количество(*) из таблицы
Требуется полное сканирование таблицы.
InnoDB хранит таблицы и индексы двумя способами
Используйте хранилище общего табличного пространства: Структура таблицы сохранена в .frm
В файле, данные и индекс находятся в innodb_data_home_dir
и innodb_data_file_path
В определенном табличном пространстве может быть несколько файлов. Использование хранилища с несколькими таблицами: Структура таблицы сохраняется в .форме
В файле данные и индексы каждой таблицы хранятся отдельно в .ibd
Носителе.
Используйте сценарии для InnoDB
Таблицы с интенсивным обновлением: Механизм хранения InnoDB особенно подходит для обработки нескольких одновременных запросов на обновление. Услуги: Механизм хранения InnoDB-это стандартный механизм хранения MySQL, поддерживающий транзакции. Автоматическое аварийное восстановление: Таблицы InnoDB могут автоматически восстанавливаться после стихийных бедствий. Ограничения внешнего ключа: Единственным механизмом хранения, который MySQL поддерживает для внешних ключей, является InnoDB. Поддерживается автоматическое добавление атрибутов AUTO_INCREMENT столбца.
2. Двигатель MyISAM
MyISAM-это механизм хранения данных по умолчанию для MySQL 5.1 и предыдущих версий. MySQL 8 собирается отказаться от движка MyISAM. MyISAM обеспечивает полнотекстовую индексацию, сжатие, пространственные функции (ГИС) и другие функции. MyISAM не поддерживает блокировки на уровне транзакций и строк и не может безопасно восстановиться после сбоя.
Характеристики MyISAM
- Поддерживается полнотекстовая индексация.
- Поддерживаются блокировки на уровне таблиц, блокировки на уровне строк не поддерживаются.
- Транзакции не поддерживаются.
- Он обладает высокой скоростью вставки и скоростью запроса.
- MyISAM-это неагрегированный индекс. Файлы данных разделены. Индекс хранит указатели на файлы данных. Индекс первичного ключа и вспомогательный индекс независимы.
- MyISAM сохраняет количество строк во всей таблице с переменной и выполняет
выбор количества(*) из таблицы
Ему нужно только прочитать переменную, что происходит очень быстро.
Три формата хранения MyISAM
MyISAM имеет три формата хранения: статический, динамический и сжатие. MyISAM автоматически выбирает формат хранения на основе определения таблицы.
Статическая таблица: Если длина каждого столбца в таблице данных заранее определена, сервер автоматически выберет тип таблицы. Поскольку каждая запись в таблице данных занимает одно и то же пространство, эффективность доступа к таблице и ее обновления очень высока. Когда данные скомпрометированы, восстановление сделать проще. Динамическая таблица: Если она отображается в таблице данных varchar
、 *текст
или *Большой двоичный объект
При создании поля сервер автоматически выберет этот тип таблицы. По сравнению со статическим MyISAM, этот вид таблиц имеет меньшее пространство для хранения, но поскольку длина каждой записи различна, после многократного изменения данных данные в таблице данных могут храниться дискретно в памяти, что приводит к снижению эффективности выполнения. В то же время в памяти может быть много фрагментации. Поэтому этот тип таблицы следует использовать часто. оптимизация таблицы
Команда или инструменты оптимизации для дефрагментации. Таблица сжатия: Таблицы обоих типов
Хранилище таблиц MyISAM
Каждая таблица MyISAM хранится на диске в трех файлах. Имя каждого файла начинается с имени таблицы, а расширение указывает тип файла. .из
Определение структуры таблицы хранения файлов. . MYD
(MYData) Файл хранит данные из таблиц. .MYI
(MyIndex) Индекс таблицы хранения файлов.
сценарий использования MyISAM
Таблицы с интенсивными запросами: Механизм хранения MyISAM является наиболее заметным преимуществом механизма хранения MyISAM, который очень быстро фильтрует большие объемы данных. Вставка плотных таблиц: Функция одновременной вставки Myisam позволяет одновременно выбирать и вставлять данные. Например: Механизм хранения MyISAM очень подходит для управления данными журнала почты или веб-сервера.
3. Механизм ПАМЯТИ
Механизм ПАМЯТИ (также известный как механизм КУЧИ) хранит все данные в памяти, не требуя дискового ввода-вывода. Таким образом, таблица ПАМЯТИ, по крайней мере, на порядок быстрее, чем таблица MyISAM. Когда MySQL перезапустится или демон mysqld выйдет из строя, структура таблицы памяти сохранится, но все данные будут потеряны.
Достижение скорости также имеет некоторые недостатки. Это требует, чтобы данные, хранящиеся в таблице данных памяти, были в формате постоянной длины, что означает, что типы данных переменной длины, такие как большой двоичный объект и ТЕКСТ, не могут использоваться. VARCHAR-это тип переменной длины, но он может использоваться как тип символа фиксированной длины в MySQL.
Характеристики ПАМЯТИ
- Данные хранятся в памяти, и дисковый ввод-вывод не требуется.
- Поддерживаются хэш-индекс и индекс B-дерева.
- Поддерживаются блокировки на уровне таблиц, блокировки на уровне строк не поддерживаются.
- После перезапуска службы структура таблицы сохранится, но данные будут потеряны.
- Столбцы типов ТЕКСТА и больших двоичных объектов не поддерживаются.
Сценарий использования ПАМЯТИ
- Доступ к данным должен быть быстрым, и данные не будут изменены, и не будет иметь значения, если они будут потеряны после перезапуска.
- Используется для поиска или сопоставления таблиц, таких как таблицы, отображающие почтовые индексы и адреса.
- Используется для сохранения промежуточных данных, полученных при анализе данных.
- Используется для кэширования результатов периодически агрегируемых данных.
4. Механизм АРХИВИРОВАНИЯ
Механизм АРХИВИРОВАНИЯ – это простой механизм хранения, оптимизированный для вставки и сжатия. Механизм АРХИВИРОВАНИЯ поддерживает только операции ВСТАВКИ и ВЫБОРА. MySQL 5.1 ранее не поддерживал индексирование. Механизм АРХИВИРОВАНИЯ использует zlib для сжатия вставленных строк, поэтому у него меньше дисковых операций ввода-вывода, чем у таблицы MyISAM.
Характеристики АРХИВА
- Поддерживаются только операции ВСТАВКИ и ВЫБОРА.
- Индекс не поддерживался до MySQL 5.1.
- Поддерживает блокировки на уровне строк и выделенные буферы.
Сценарий использования АРХИВА
- Он подходит для приложений регистрации и сбора данных, которым часто требуется полное сканирование таблиц при анализе данных.
- Сценарии, требующие быстрых операций ВСТАВКИ.
5. Механизм СЛИЯНИЯ
Механизм хранения слияний-это вариант механизма MyISAM. Таблицы СЛИЯНИЯ-это виртуальные таблицы, объединенные из нескольких таблиц MyISAM. Эти таблицы MyISAM должны иметь точно такую же структуру. В таблице слияния нет данных. Таблицы типов слияния можно запрашивать, обновлять и удалять. Эти операции фактически выполняются с внутренними таблицами MyISAM.
Механизм хранения слияния использует сценарии для получения такой информации, как журналы сервера. Общая стратегия хранения заключается в разделении данных на множество таблиц, каждое имя которых связано с определенным временем окончания. Например, для хранения данных журнала сервера можно использовать 12 идентичных таблиц, и каждая таблица называется именем соответствующего месяца. Когда необходимо создавать отчеты на основе данных из всех 12 таблиц журналов, это означает, что необходимо писать и обновлять запросы к нескольким таблицам, чтобы отразить информацию в этих таблицах. Вместо написания этих запросов, которые могут быть неверными, объедините эти таблицы вместе и используйте запрос, а затем удалите таблицу слияния, не затрагивая исходные данные. Удаление таблицы слияния удаляет только определение таблицы слияния и не влияет на внутреннюю таблицу.
Но с введением разделения от двигателя отказались.
6. Движок CSV
CSV-движок может обрабатывать обычные CSV-файлы в виде таблиц MySQL, но такие таблицы не поддерживают индексацию.
Характеристики CSV
- Обычные CSV-файлы могут быть обработаны в виде таблиц в MySQL.
- Все столбцы не должны быть пустыми
- Индексирование не поддерживается (не подходит для больших таблиц, не для онлайн-обработки)
- Вы можете редактировать файлы данных напрямую (сохранять содержимое текстовых файлов).
Сценарий использования CSV
- Подходит в качестве промежуточной таблицы обмена данными (может копировать и копировать файлы во время работы сервера, может хранить электронные таблицы в виде файлов CSV и копировать их в каталог данных MySQL, может быть открыт и использован в базе данных. Аналогично, если данные записываются в таблицу данных CSV-файла, другие веб-программы могут быстро считывать данные.