KnigaRead.com/
KnigaRead.com » Компьютеры и Интернет » Базы данных » Алексей Паутов - MySQL: руководство профессионала

Алексей Паутов - MySQL: руководство профессионала

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн "Алексей Паутов - MySQL: руководство профессионала". Жанр: Базы данных издательство неизвестно, год неизвестен.
Перейти на страницу:

InnoDB: использован для прикладных программ диалоговой обработки запросов и ряда свойств, включая поддержку транзакций ACID и внешние ключи. InnoDB включен по умолчанию во все двоичные дистрибутивы MySQL 5.1. Описан в книге "Руководство администратора СУБД MYSQL", глава 7, раздел "7.6 Таблицы InnoDB".


Falcon: работает с многократными потоками и безопасной средой транзакции, которая безопасно хранит данные при обеспечении весьма высокой производительности.

ПРЕДУПРЕЖДЕНИЕ: Falcon в настоящее время обеспечивается только внутри ветки MySQL 5.1 и не рассматривается готовым к выпуску. Это обеспечивается только для целей тестирования и оценки на этой стадии.


Memory: сохраняет все данные в RAM для чрезвычайно быстрого доступа в средах, которые требуют быстрых поисковых таблиц. Этот тип памяти был прежде известен как HEAP. Описан в книге "Руководство администратора СУБД MYSQL", глава 7, раздел " 7.4 Таблицы HEAP".


Merge: позволяет MySQL DBA или разработчику логически группировать ряд идентичных MyISAM-таблиц и ссылаться на них как на один объект. Хороши для VLDB-сред, типа хранилищ данных. Описан в книге "Руководство администратора СУБД MYSQL", глава 7, раздел " 7.2 Таблицы MERGE".


Archive: обеспечивает совершенное решение для сохранения и восстановления больших количеств редко используемых исторических, архивированных данных.


Federated : предлагает способность связать отдельные серверы MySQL, чтобы создать одну логическую базу данных из многих физических. Очень хорош для распределенной среды данных.


NDB Cluster (он же NDB): кластерный вариант базы данных, который особенно подходит для прикладных программ с высокоэффективными потребностями поисковой таблицы, которые также требуют самой высокой возможной степени полезного времени и доступности. Описан подробно в моей работе " MySQL Cluster".


CSV: хранит данные в текстовых файлах, использующих отделяемый запятыми формат значений. Вы можете использовать CSV, чтобы легко обмениваться данными между другим программным обеспечением и прикладными программами, которые могут импортировать и экспортировать в формате CSV.


Blackhole : принимает к записи, но не сохраняет данные, а поиски всегда возвращают пустой набор. Функциональные возможности могут использоваться в распределенном проекте базы данных, где данные автоматически скопируются, но не сохранены локально.


Example: это тип памяти, который не делает ничего. Вы можете создавать таблицы с ним, но никакие данные не могут быть сохранены в них или восстановлены из них. Цель этого типа памяти в том, чтобы служить примером того, как вообще надо писать типы памяти. Это прежде всего представляет интерес для разработчиков.

Эта глава описывает каждый из типов памяти MySQL, кроме MySQL Cluster.

Важно не забыть, что Вы не ограничены использованием одного и того же типа памяти для всего сервера или схемы: Вы можете использовать различные типы памяти для каждой таблицы в схеме.

2.2.1. Выбор типа памяти

Различные типы памяти, обеспеченные MySQL, разработаны для различных случаев использования. Чтобы использовать съемную архитектуру памяти, хорошо иметь представление относительно выгод и недостатков различных типов памяти (хранения). Следующая таблица обеспечивает краткий обзор некоторых вариантов, обеспеченных MySQL:

Свойство MyISAM Memory InnoDB Arhive NDB Ограничения памяти 256 TB 64TB 384 EB[4] ТранзакцииНетНетДаНетДа Блокировка степени детализации Таблица Таблица Строка Строка Строка MVCC (кадр чтения) НетНет ДаДа Нет География Да Нет Да[1] Да[1] Да[1] Индексы B-tree Да Да Да Нет Да Hash-индексы Нет Да Нет Нет Да Поисковые индексы Full-text Да Нет Нет Нет Нет Индексы для кластера Нет Нет Да Нет Нет Кэширование данных Нет Не опред. Да Нет Да Кэширование индексов Да Не опред. Да Нет Да Сжатие данных Да Нет Нет Да Нет Шифрование данных[2] Да Да Да Да Да Cluster Нет Нет Нет Нет Да Репликация[3] Да Нет Да Да Да Поддержка внешнего ключа Нет Нет Да Нет Нет Копия / восстановление на момент времени[3] Да Да Да Да Да Поддержка кэша запросов Да Да Да Да Да Модификация статистики для словаря данных Да Да Да ДаДа


Некоторые необходимые пояснения:

[1] Поддерживает пространственные типы данных, но не выполняет индексацию таких данных.

[2] Выполнено в сервере (через функции шифрования), а не в типе памяти.

[3] Выполнено в сервере, а не в типе памяти.

[4] EB = exabyte (экзабайт = 1024 * 1024 терабайт).

2.2.2. Сравнение транзакционных и не транзакционных таблиц

Транзакционно-безопасные таблицы (TST) имеют несколько преимуществ над не транзакционно-безопасными таблицами (NTST):


Они более надежные. Даже если MySQL терпит крах, или Вы получаете аппаратные проблемы, Вы можете получить Ваши данные обратно автоматическим восстановлением или из копии плюс файл регистрации транзакции.


Вы можете объединять много инструкций и принимать их все в то же самое время инструкцией COMMIT (если autocommit выключен).


Вы можете выполнять ROLLBACK, чтобы игнорировать Ваши изменения (если autocommit выключен).


Если произошел сбой модификации, все Ваши изменения вернутся. С не транзакционно-безопасными таблицами все изменения, которые имели место, постоянны.


Транзакционно-безопасные типы памяти могут обеспечивать лучший параллелизм для таблиц, которые делают много модификаций одновременно с чтением.

Вы можете объединять транзакционно-безопасные и не транзакционно-безопасные таблицы в тех же самых инструкциях. Однако, хотя MySQL поддерживает несколько транзакционно-безопасных типов памяти (хранения), для самых лучших результатов, Вы не должны смешивать различные типы внутри транзакции с заблокированным autocommit. Например, если Вы делаете это, изменения для не транзакционно-безопасной таблицы все еще совершены немедленно и не могут быть прокручены обратно.

Не транзакционно-безопасные таблицы также имеют несколько преимуществ, которые происходят из того, что не имеется никаких непроизводительных затрат на транзакции:


Намного быстрее.


Более низкие требования дискового пространства.


Меньшее количество памяти требуется, чтобы выполнить модификации.

2.2.3. Другие типы памяти

Другие типы памяти могут быть доступны от третьих лиц, которые использовали Custom Storage Engine interface.

Вы можете находить подробную информацию в списке типов памяти третьего лица на странице MySQL Forge Storage Engines http://forge.mysql.com/projects/search.php?t=tagk=storage%20engine.

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

На текущий момент есть следующие сторонние типы памяти:


PrimeBase XT (PBXT): PBXT был разработан для современного web-основанного параллелизма.


RitmarkFS RitmarkFS позволяет Вам обращаться и управлять файловой системой, используя SQL-запросы. RitmarkFS также поддерживает репликацию файловых систем и трэкинг изменений.


Distributed Data Engine: Open Source проект, который специализирован, чтобы обеспечить поддержку распределенных данных согласно статистике рабочей нагрузки.


mdbtools: съемный тип памяти, который позволяет доступ только для чтения к .mdb-файлам базы данных Microsoft Access.


solidDB for MySQL разработан для задание-критических реализаций, которые требуют транзакционные базы данных. solidDB многопоточный драйвер, который полностью поддерживает ACID со всеми ожидаемыми уровнями изоляции транзакции, блокировкой уровня строки и многоверсионным управлением параллелизма (MVCC) с не блокируемыми чтением и записью.

Для подробной информации относительно разработки типа памяти, который может использоваться со съемной архитектурой памяти обратитесь к Writing a Custom Storage Engine в MySQL Internals.

2.3. Установка типа памяти

Когда Вы создаете новую таблицу, Вы можете определять, который тип памяти использовать, добавляя опцию ENGINE к инструкции CREATE TABLE:CREATE TABLE t (i INT) ENGINE = INNODB;


Если Вы опускаете опцию ENGINE или TYPE, используется заданный по умолчанию памяти. Обычно это MyISAM, но Вы можете изменять это, используя опцию сервера --default-storage-engine или --default-table-type, либо устанавливая опцию default-storage-engine или default-table-type в файле конфигурации my.cnf.

Вы можете устанавливать заданный по умолчанию тип памяти, который нужно использовать в течение текущего сеанса, устанавливая переменную storage_engine:SET storage_engine=MYISAM;


Когда MySQL установлен на Windows, используя MySQL Configuration Wizard, InnoDB может быть выбран как значение по умолчанию вместо MyISAM.

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*