Что из себя физически представляет база данных MySQL
Давайте разберемся, что именно из себя представляет наша база.
Наверняка все вы когда-то работали (или работаете сейчас) с БД MySQL. И когда мы ее открываем в phpmyadmin, такая база представляет собой красивую табличку.
И конечно, большинство пользователей полагает, что базы данных не хранятся в файлах.
Но кто из вас по настоящему желает познать вид MySQL? Давайте же узнаем, насколько же глубока кроличья нора.
Для этого мы перейдем туда, где базы хранятся.
В MacOS, на которой работает тестовый стенд, путь будет таким:
Папка mysql в которой хранятся базы данных из примера выглядит так.
Что мы тут видим?
Во-первых, непонятные файлы с расширениями MYI, FRM, MYD. Давайте поставим их на свои места.
Программные файлы, которые читают и записывают заголовки .MYI, находятся в каталоге ./myisam: mi_open.c содержит подпрограммы, которые записывают каждый раздел заголовка, mi_create.c имеет подпрограмму, которая вызывает подпрограммы mi_open.c по порядку, а myisamdef.h имеет определения структуры, соответствующие тому, что мы собираемся описать.
Каждый ключ содержит все содержимое всех столбцов, включая конечные пробелы в столбцах CHAR. Переднего усечения нет. Обратного усечения нет. (Может произойти усечение пробела, если keyseg-> flag флаг HA_SPACE_PACK включен.)
Для таблиц с фиксированной строкой: указатель представляет собой номер фиксированного размера (4 байта), который содержит порядковый номер строки. Первая строка — это запись № 0000. Этот элемент аналогичен ROWID или RID (идентификатор строки), который используют другие СУБД. Для таблиц с динамическими строками: указатель — это смещение в файле .MYD.
Нормальная длина блока составляет 0x0400 (1024) байтов.
Файлы FRM хранятся в той же папке, в которой хранится база данных этой таблицы файлов FRM. Файлы FRM — это двоичные файлы. Существует множество программ, которые используют этот тип расширения файла и, следовательно, могут использоваться для открытия файла FRM. Некоторые из них — Microsoft Visual Basic, MySQL, iBlaze, Photoframe, Corel WorldPerfect, Corel Painter и MYOB. Среди них Photoframe использует файл .frm для файла изображения изображения и Corel Painter для файлов стека кадров, а остальные используются для файлов форм.
Наверняка все вы когда-то работали (или работаете сейчас) с БД 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 для файлов стека кадров, а остальные используются для файлов форм.