MyISAM

MyISAM
MyISAM
Тип

СУБД (Storage Engine для MySQL)

Лицензия

GPLv2

MyISAM — одна из основных (наряду с InnoDB) систем хранения данных в СУБД MySQL. Она основывается на коде ISAM и обладает в сравнении с ним рядом полезных дополнений.

Таблицы MyISAM прекрасно подходят для использования в WWW и других средах, где преобладают запросы на чтение. Таблицы типа MyISAM показывают хорошие результаты при выборках SELECT. Во многом это связано с отсутствием поддержки транзакций и внешних ключей. Однако при модификации и добавлении записей вся таблица кратковременно блокируется, это может привести к серьёзным задержкам при большой загрузке.

Для таблиц этого типа создан ряд специализированных утилит, позволяющих манипулировать табличными файлами. Сюда входят утилита myisamchk для проверки и восстановления таблиц и индексов (требует полной остановки процесса MySQL и создает время неработоспособности системы, исполнение заключается в создании с нуля нового целостного файла таблицы и перезаписи данных в него) и утилита myisampack для создания сжатых таблиц.

Таблицы MyISAM являются платформенно-независимыми. Табличные файлы можно перемещать между компьютерами разных архитектур и разными операционными системами без всякого преобразования. Для этого MySQL хранит все числа с плавающей запятой в формате IEEE, а все целые числа — в формате с прямым порядком следования байтов.

Индексные файлы имеют расширение .MYI (MYIndex). Файлы с расширением .MYD (MYData) содержат данные, а с расширением .frm — схему таблицы. Если индексный файл по какой-то причине теряется, программа перестраивает индексы, используя информацию из frm-файла.

По умолчанию в каждой таблице может быть не более тридцати двух индексов, но это значение можно повысить до шестидесяти четырёх. Индексы создаются в виде двоичных деревьев. Разрешается индексировать столбцы типа BLOB и TEXT, а также столбцы, допускающие значения NULL.

В таблицах MyISAM могут быть фиксированные, динамические либо сжатые записи. Выбор между фиксированным и динамическим форматом диктуется определениями столбцов. Для создания сжатых таблиц предназначена утилита myisampack.

Недостатки

  • Отсутствие самовосстановления по журналу при сбоях (возможность присутствует во всех развитых СУБД).
  • Отсутствие блокировок регионов, меньших, чем целые таблицы. Приводит к отсутствию масштабируемости, то есть к сильной деградации производительности с повышением нагрузки.
  • Отсутствие средств резервного копирования. Утилита mysqldump, предлагаемая для создания резервных копий, является не инструментом резервного копирования, а инструментом экспорта в текст (в последовательность операторов INSERT, воссоздающих содержимое таблицы). Для выполнения задачи с сохранением целостности базы данных mysqldump блокирует таблицы, приводя к полной остановке работы системы на всё время своего исполнения. Останов процесса MySQL и создание копии инструментами копирования файлов из UNIX (например, gzip в режиме минимальной компрессии) приводит к меньшему времени простоя системы.[источник не указан 72 дня]
  • Слабая реализация сортировки, которой является клауза ORDER BY языка SQL при отсутствии подходящего индекса. MyISAM сортирует данные слиянием, с использованием qsort для первоначально сливаемых небольших регионов. Это требует не только крайне неоптимального по дисковому вводу/выводу создания на каждую операцию сортировки 2 временных файлов, растущих с нулевого размера, с работой с ними через неоптимальные вызовы fopen() и fwrite(), но и выделения sort buffer для каждого клиента MySQL. Размер sort buffer (устанавливается параметром настройки MySQL sort_buffer_size) для достижения оптимальной производительности должен быть порядка сотен килобайт, что под большой нагрузкой приводит к полному исчерпанию не только кучи, но и пользовательского адресного пространства в 32-битных ОС семейства UNIX (во FreeBSD на x86 — 3 ГБ), и влечет за собой отказы вызовов malloc() во всем коде MySQL, а не только в коде сортировки. Так как такие отказы далеко не всегда проверяются в коде, результатом может быть крах MySQL по сигналу SIGSEGV.

Данные недостатки проявляются в заметной степени при высокой нагрузке: порядка 400 клиентов, исполняющих сложные запросы по базе данных размером 2-3 ГБ.

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Поможем сделать НИР

Полезное


Смотреть что такое "MyISAM" в других словарях:

  • MyISAM — Developer(s) Oracle Corporation Operating system Cross platform Type Database engine License GNU General Public License …   Wikipedia

  • MyISAM — (My Indexed Sequential Access Method) ist eine Storage Engine des Datenbankverwaltungssystems MySQL. Sie baut, um einige Erweiterungen ergänzt, auf dem älteren ISAM System auf. Oracle will in Zukunft InnoDB als Standard Storage Engine einsetzen.… …   Deutsch Wikipedia

  • MyISAM — est un moteur de stockage du SGBDR MySQL. Il est basé sur l ancien moteur de stockage ISAM. Il est le moteur par défaut de MySQL jusqu à la version 5.5, remplacé par InnoDB. Fonctionnement MyISAM ne prend pas en charge les transactions ni les… …   Wikipédia en Français

  • MyISAM — es la tecnología de almacenamiento de datos usada por defecto por el sistema administrador de bases de datos relacionales MySQL. Este tipo de tablas están basadas en el formato ISAM pero con nuevas extensiones. En las últimas versiones de MySQL,… …   Wikipedia Español

  • Comparison of MySQL database engines — This a comparison between the two primary database engines (InnoDB and MyISAM) for the MySQL database management system (DBMS). A database engine (or storage engine ) is the underlying software component that a DBMS uses to create, read, update… …   Wikipedia

  • MYSQL — Entwickler: Sun Microsystems (bis Februar 2008: MySQL AB) Aktuelle Version: 5.1.34 (Community Server) (7. April 200 …   Deutsch Wikipedia

  • MySql — Entwickler: Sun Microsystems (bis Februar 2008: MySQL AB) Aktuelle Version: 5.1.34 (Community Server) (7. April 200 …   Deutsch Wikipedia

  • Mysql — Entwickler: Sun Microsystems (bis Februar 2008: MySQL AB) Aktuelle Version: 5.1.34 (Community Server) (7. April 200 …   Deutsch Wikipedia

  • InnoDB — Infobox Software name = InnoDB logo = caption = developer = Oracle Corporation latest release version = latest release date = operating system = Cross platform genre = Database engine license = GPL or proprietary website = [http://www.innodb.com/ …   Wikipedia

  • MySQL — Entwickler Oracle Corporation (bis Februar 2008: MySQL AB, bis Januar 2010: Sun Microsystems) Aktuelle Version …   Deutsch Wikipedia


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»