Что из себя физически представляет база данных MySQL

Давайте разберемся, что именно из себя представляет наша база.

Наверняка все вы когда-то работали (или работаете сейчас) с БД MySQL. И когда мы ее открываем в phpmyadmin, такая база представляет собой красивую табличку.


И конечно, большинство пользователей полагает, что базы данных не хранятся в файлах.

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

В MacOS, на которой работает тестовый стенд, путь будет таким:
mac⁩ ▸ ⁨Программы⁩ ▸ ⁨MAMP⁩ ▸ ⁨db⁩ ▸ ⁨mysql57⁩
Более расширенный путь здесь публиковать не станем, чтобы не забивать мозг лишней сейчас информацией.
Папка mysql в которой хранятся базы данных из примера выглядит так.

Что мы тут видим?
Во-первых, непонятные файлы с расширениями MYI, FRM, MYD. Давайте поставим их на свои места.

Файлы MYI

Файлы MYI для таблицы MyISAM содержит индексы таблицы.

Заголовок MYI

Файл .MYI начинается с заголовка, содержащего информацию о параметрах, размерах файлов и ключей. В терминологии MySQL ключ — это то, что вы создаете с помощью запроса CREATE [UNIQUE] INDEX.

Программные файлы, которые читают и записывают заголовки .MYI, находятся в каталоге ./myisam: mi_open.c содержит подпрограммы, которые записывают каждый раздел заголовка, mi_create.c имеет подпрограмму, которая вызывает подпрограммы mi_open.c по порядку, а myisamdef.h имеет определения структуры, соответствующие тому, что мы собираемся описать.

Ключевые значения .MYI

Ключевые значения находятся в блоках (термин MySQL для страниц). Блок содержит значения только из одного индекса.
Каждый ключ содержит все содержимое всех столбцов, включая конечные пробелы в столбцах CHAR. Переднего усечения нет. Обратного усечения нет. (Может произойти усечение пробела, если keyseg-> flag флаг HA_SPACE_PACK включен.)

Для таблиц с фиксированной строкой: указатель представляет собой номер фиксированного размера (4 байта), который содержит порядковый номер строки. Первая строка — это запись № 0000. Этот элемент аналогичен ROWID или RID (идентификатор строки), который используют другие СУБД. Для таблиц с динамическими строками: указатель — это смещение в файле .MYD.
Нормальная длина блока составляет 0x0400 (1024) байтов.

Файл MYD

Файлы MYD — это файл, содержащий в себе данные базы. Проще сказать красивую табличку из примера выше и не только ее.

Файл FRM

Файлы FRM — это файлы форм, используемые в качестве файлов формата базы данных MySQL. Когда в MySQL создается новая таблица, появляется файл FRM. Эти файлы форм используются для определения полей в таблице. Он также используется для представления информации о форматировании структуры таблицы.

Файлы FRM хранятся в той же папке, в которой хранится база данных этой таблицы файлов FRM. Файлы FRM — это двоичные файлы. Существует множество программ, которые используют этот тип расширения файла и, следовательно, могут использоваться для открытия файла FRM. Некоторые из них — Microsoft Visual Basic, MySQL, iBlaze, Photoframe, Corel WorldPerfect, Corel Painter и MYOB. Среди них Photoframe использует файл .frm для файла изображения изображения и Corel Painter для файлов стека кадров, а остальные используются для файлов форм.
Поделиться:

Нет комментариев