MyISAM: подсистема хранения базы данных MySQL

MyISAM - система хранения таблиц в СУБД MySQLБудучи подсистемой хранения по умолчанию в MySQL 5.1 и более ранних верси­ях, MyISAM предоставляет большой список функций, таких как полнотекстовое индексирование, сжатие и пространственные функции (для геоинформационных систем, ГИС). MyISAM не поддерживает транзакции или построчные блокировки. Ее самым слабым местом, несомненно, является то, что она не имеет даже удаленного механизма защиты от сбоев. Из-за подсистемы MyISAM MySQL до сих пор имеет репутацию СУБД без транзакций, хотя позволяет использовать транзакции уже более десяти лет! Тем не менее MyISAM не так уж плоха для нетранзакционной, не отказоустойчивой подсистемы хранения. Если вам нужны данные только для чтения или если ваши таблицы невелики и их восстановление не будет чересчур сложным, то не должно возникнуть вопросов по использованию MyISAM. (Но, пожалуйста, не применяйте ее по умолчанию. Вместо этого задействуйте InnoDB).


Оглавление статьи[Показать]


 

Хранение

MyISAM обычно хранит каждую таблицу в двух файлах — в файле данных и ин­дексном файле. Эти файлы имеют расширения .MYD и .MYI соответственно. Таблицы типа MyISAM могут содержать как динамические, так и статические строки (строки фиксированной длины). MySQL решает, какой формат использовать, основываясь на определении таблицы. Количество строк в таблице типа MyISAM ограничено в первую очередь доступным дисковым пространством на сервере базы данных и мак­симальным размером файла, допустимым в операционной системе.

Таблицы MyISAM со строками переменной длины, создаваемые в версии MySQL 5.0, по умолчанию настроены на поддержку 256 Тбайт данных с использованием шести­байтных указателей на записи с данными. В более ранних версиях MySQL указатели по умолчанию были четырехбайтными с максимальным объемом данных 4 Гбайт. Все версии MySQL могут поддерживать размер указателя до 8 байт. Чтобы изме­нить размер указателя в таблице MyISAM (уменьшить или увеличить), вы должны изменить таблицу и задать новые значения параметров MAX_ROWS и AVG_ROW_LENGTH, которые дают приблизительную оценку необходимого пространства. Это приведет к перезаписи таблицы и всех ее индексов, что может занять много времени.

 

Особенности MyISAM

Как одна из самых старых подсистем хранения MySQL, MyISAM может выполнять много функций, которые за годы использования СУБД были разработаны для решения различных задач.

 

Сжатые таблицы MyISAM

Некоторые таблицы после создания и заполнения данными никогда больше не из­меняются. Такие таблицы хорошо подходят для сжатия средствами MyISAM.

Для сжатия (или упаковки) таблиц существует специальная утилита myisampack. Сжатые таблицы невозможно изменить (хотя при необходимости можно распаковать их, внести изменения и снова сжать), но они занимают на диске гораздо меньше места, чем неупакованные. В результате их использования увеличивается произво­дительность, поскольку из-за небольшого размера таких таблиц требуется меньше операций поиска на диске для нахождения требуемых записей. Сжатые таблицы MyISAM могут иметь индексы, но они также доступны только для чтения.

Издержки на распаковку данных для чтения незначительны для большинства при­ложений, установленных на современном оборудовании, а значительная экономия достигается из-за сокращения операций ввода/вывода. Строки сжимаются по от­дельности, поэтому для получения одной строки MySQL не нужно распаковывать всю таблицу (или даже страницу).

 

Производительность MyISAM

Благодаря компактному хранению данных и невысоким издержкам, обусловленным простотой архитектуры, MyISAM в некоторых случаях может обеспечить хорошую производительность. У нее есть серьезные ограничения по масштабируемости, включая мьютексы, установленные на ключевых кэшах. MariaDB предлагает сег­ментированный кэш-ключ, который позволяет избежать этой проблемы. Однако наиболее распространенной проблемой MyISAM, мешающей добиться высокой про­изводительности, является блокировка таблиц. Если запросы застревают в статусе «Заблокировано», вы страдаете от блокировки на уровне таблицы.

Вас заинтересует / Intresting for you:

Оператор SELECT в MySQL 8: пол...
Оператор SELECT в MySQL 8: пол... 7332 просмотров Дэйзи ак-Макарова Sat, 07 Aug 2021, 10:47:45
InnoDB: подсистема хранения ба...
InnoDB: подсистема хранения ба... 4921 просмотров Ирина Светлова Mon, 07 Jan 2019, 06:34:07
Использование MySQL в качестве...
Использование MySQL в качестве... 2261 просмотров Андрей Волков Tue, 01 Oct 2019, 05:41:51
Новые возможности базы данных ...
Новые возможности базы данных ... 1498 просмотров Дэйзи ак-Макарова Wed, 04 Aug 2021, 04:13:52
Печать
Войдите чтобы комментировать

admin аватар
admin ответил в теме #10346 2 года 3 мес. назад
Отличное описание MyISAM! +1
apv аватар
apv ответил в теме #10106 2 года 8 мес. назад
Ljcnfnjxyj подробно описали MyISAM. Хотя движок уже не используется в новых версиях, но действующих продуктов с ним всё еще очень много.
iVoron аватар
iVoron ответил в теме #9361 5 года 1 мес. назад
Хорошо сказали про все + и - MyISAM. Подписываюсь на Вас)