Первый взгляд на MySQL 6::Журнал СА 10.2008
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Дата-центры  

Дата-центры: есть ли опасность утечки данных?

Российские компании уже несколько лет испытывают дефицит вычислительных мощностей. Рост числа проектов,

 Читать далее...

Книжная полка  

Защиты много не бывает

Среди книжных новинок издательства «БХВ» есть несколько изданий, посвященных методам социальной инженерии

 Читать далее...

Событие  

В банке рассола ждет сисадмина с полей фрактал-кукумбер

Читайте впечатления о слете ДСА 2024, рассказанные волонтером и участником слета

 Читать далее...

Организация бесперебойной работы  

Бесперебойная работа ИТ-инфраструктуры в режиме 24/7 Как обеспечить ее в нынешних условиях?

Год назад ИТ-компания «Крок» провела исследование «Ключевые тренды сервисного рынка 2023». Результаты

 Читать далее...

Книжная полка  

Читайте и познавайте мир технологий!

Издательство «БХВ» продолжает радовать выпуском интересных и полезных, к тому же прекрасно

 Читать далее...

СУБД PostgreSQL  

СУБД Postgres Pro

Сертификация по новым требованиям ФСТЭК и роль администратора без доступа к данным

 Читать далее...

Критическая инфраструктура  

КИИ для оператора связи. Готовы ли компании к повышению уровня кибербезопасности?

Похоже, что провайдеры и операторы связи начали забывать о требованиях законодательства

 Читать далее...

Архитектура ПО  

Архитектурные метрики. Качество архитектуры и способность системы к эволюционированию

Обычно соответствие программного продукта требованиям мы проверяем через скоуп вполне себе понятных

 Читать далее...

Как хорошо вы это знаете  

Что вам известно о разработках компании ARinteg?

Компания ARinteg (ООО «АРинтег») – системный интегратор на российском рынке ИБ –

 Читать далее...

Графические редакторы  

Рисование абстрактных гор в стиле Paper Cut

Векторный графический редактор Inkscape – яркий представитель той прослойки open source, с

 Читать далее...

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

 Читать далее...

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

 Читать далее...

Виртуализация  

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

 Читать далее...

Книжная полка  

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 6413
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 7117
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 4395
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 3086
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 3882
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 3897
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6385
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3234
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3529
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7364
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10726
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12445
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 14096
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9192
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7142
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5446
Комментарии: 3
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4683
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3495
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3212
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3449
Комментарии: 0
Рецензия на книгу «MongoDB в действии»

 Читать далее...

02.12.2013г.
Просмотров: 3090
Комментарии: 0
Не думай о минутах свысока

 Читать далее...

Друзья сайта  

 Первый взгляд на MySQL 6

Архив номеров / 2008 / Выпуск №10 (71) / Первый взгляд на MySQL 6

Рубрика: Базы данных /  Инструменты

Кирилл Сухов

Первый взгляд на MySQL 6

В апреле 2008 года ввиду активно обсуждавшейся новости о покупке компании MySQL AB корпорацией Sun Microsystems как-то без особого внимания прошло сообщение о том, что активно разрабатываемая версия СУБД 5.2 выделена в отдельную ветку и соответственно переименована в MySQL 6.0. Прошло уже полгода, и это изделие, носящее в данный момент статус альфа-версии, можно рассмотреть и оценить новые возможности и предстоящие изменения.

Что собой представляет самая передовая версия самого распространённого сервера баз данных? Было ли в нововведениях что-то такое, что заставило поменять первую цифру? Ниже приведён краткий обзор, охватывающий основные нововведения MySQL 6.

Новое хранилище данных Falcon

До последнего времени самыми популярными типами таблиц в MySQL остаются MyISAM и InnoDB. Первые отличаются высочайшей производительностью при простых запросах на выборку. Именно эти хранилища данных (а также их предшественники – таблицы ISAM) сделали данную СУБД столь популярной. Недостатком этих таблиц являются всё ещё малые возможности и ограничения. С таблицами InnoDB всё вроде бы гораздо лучше – там нет ограничений MyISAM (таких, например, как блокировки на уровне таблицы при вставке), поддерживаются все типы транзакций. Правда, за всё это приходится платить меньшей производительностью, но основная проблема не в этом.

В октябре 2005 года разработчик InnoDB, компания Innobase, была приобретена корпорацией Oracle, и дальнейшее развитие этого движка лежит теперь в русле проприетарной лицензии.

Альфа-версия хранилища данных Falcon, призванного заменить InnoDB, должна была появиться в MySQL 5.2, но в связи с изменениями в нумерации версий доступна теперь в ветке 6.0.x.

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

  •  Хранение всех типов данных MySQL.
  •  Технология Multi Version Concurrency Control (MVCC), позволяющая строкам и таблицам обновляться без блокировки уровня строк. Практически это позволяет сильно уменьшить или полностью устранить блокировку при обновлении.
  • Система «гибких» (flexible) блокировок, включающая гибкую установку уровня блокировки и распознавание deadlock-ситуаций.
  • Оптимизация под современные процессоры с поддержкой многопоточности и оптимизации для работы с большим количеством оперативной памяти.
  • Полная (полностью поддерживающая ACID-стандарт) поддержка транзакций, поддержка конкурентных транзакций.
  • Расширенные возможности работы с B-Tree-индексами.
  • Возможность хранить информацию на диске в сжатом виде, осуществляя компрессию и декомпрессию «на лету».
  • Интеллектуальное управление размещением данных на диске. Дисковое пространство под файлы данных и логов может быть автоматически перераспределено.
  • Кэширование данных и индексов.
  • Неявные точки сохранения (Implicit savepoints) – автоматические точки сохранения, гарантирующие целостность данных.

Полный список возможностей хранилища данных Falcon доступен в руководстве MySQL 6 (http://dev.mysql.com/doc/refman/6.0/en/se-falcon-features.html).

Немного о грустном. Далеко не все эти функции реализованы в текущей версии Falcone, и какие из них так и останутся только в проекте к моменту релиза шестой версии, пока неизвестно.

Хранилище данных Maria

Разработка этого движка велась одним из создателей MySQL, Майклом Вайдениусом (Michael Widenius), около трёх лет и была прямо вызвана действиями Oracle (по покупке Innobase). Тем не менее таблицы Maria стали логическим развитием таблиц MyISAM, расширенной версией которых данный движок по сути и является.

Главное, что отличает «Марию» от своего прародителя, это наличие средств сохранения целостности данных после краха. Реализовано это посредством ведения лога операции: после катастрофы производится откат результатов выполнения текущей операции или возврат в состояние до команды LOCK TABLES.

Использование лога операций даёт возможность восстановления состояния БД из любой точки лога, и это восстановление может быть произведено после любых изменений таблиц, включая операции CREATE/DROP/RENAME/TRUNCATE. Естественно, за использование лога приходится платить производительностью, поэтому планируется реализовать два режима операций – транзакционный и режим работы без отражения в логе транзакций. Последний может быть использован для некритичных данных.

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

Кроме того, в новом движке введено расширение для всех типов данных MyISAM, формата rows-in-block, которое использует страничный механизм хранения данных, для кэширования данных в столбцах. Блочный механизм хранения строк позволяет кэшировать данные построчно.

Размер страницы данных в новом хранилище составит 8 Kb (против 1 Кб в MyISAM), что позволяет достичь более высокой производительности для индексов по полям фиксированного размера.

Резервное копирование и схема данных

В новой версии СУБД появились команды BACKUP DATABASE и RESTORE, предназначенные соответственно для резервного копирования и восстановления базы данных.

Наверное, это нововведение было не менее ожидаемым, чем новые хранилища данных. Первая из этих команд позволяет сделать резервную копию одной или нескольких баз данных на определенный момент времени, вторая восстанавливает состояния БД на указанный момент. Восстановление из резервной копии может быть проведено одной командой с использованием бинарного лога для прояснения момента возможной потери данных. Выполнение команд BACKUP DATABASE и RESTORE может быть проведено без перевода базы данных в режим offline или отключения работающих клиентов. Разумеется, BACKUP DATABASE блокирует такие операции, как drop table, но общее число блокируемых команд сведено к минимуму. В общем случае все блокировки касаются операторов языка определения данных – Data Definition Language (DDL). Команда RESTORE блокирует несколько больше операций, так как она перезаписывает данные и контекст работы базы данных.

Важно, что команды BACKUP DATABASE и RESTORE работают независимо от типа таблиц. Рассмотрим примеры работы этих команд.

Создание резервной копии:

BACKUP DATABASE test_db TO '/tmp/backupfile';

Восстановление:

RESTORE FROM '/tmp/backupfile';

Работа с несколькими базами данных:

BACKUP DATABASE db1, db2 TO '/tmp/db1-db2.backup';

BACKUP DATABASE * TO '/tmp/all.backup';

В команде BACKUP DATABASE предусмотрена опция WITH COMPRESSION, позволяющая получать резервные копии в архивированном виде. Опция COMPRESSION_ALGORITHM позволяет указать алгоритм сжатия (по умолчанию – gzip, к сожалению, на настоящий момент он же и единственный доступный).

В настоящее время команды BACKUP DATABASE и RESTORE имеют следующие ограничения:

  • BACKUP DATABASE не включает в резервную копию временные таблицы. Поддержка резервной копии табличного пространства в таблицах типа ограничена типом таблиц Falсon.
  • Резервное копирование не касается баз данных MySQL и INFORMATION_SCHEMA.

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

Команды BACKUP DATABASE и RESTORE не могут быть использованы в хранимых процедурах, функциях или триггерах. Они также не могут быть использованы как подготовленные выражения (prepared statements).

Интересные изменения произошли в базе данных INFORMATION_SCHEMA, которая впервые появилась в пятой версии СУБД. Это виртуальная БД, являющаяся набором представлений (views) к системной базе данных и предоставляющая доступ к методанным баз данных, то есть к информации об их структуре, объектах (таблицах, представлениях, хранимых процедурах и т. д.) и типах данных. Теперь она дополнена таблицей PARAMETERS, содержащей данные о параметрах и возвращаемых значениях функций, а также о параметрах хранимых процедур. Информация о параметре представлена в той же форме, как и в поле param_list таблицы mysql.proc.

Второе дополнение касается таблицы ROUTINES, содержащей информацию о хранимых процедурах и функциях. В неё добавлены новые поля:

  • DATA_TYPE;
  • CHARACTER_MAXIMUM_LENGTH;
  • CHARACTER_OCTET_LENGTH;
  • NUMERIC_PRECISION;
  • NUMERIC_SCALE;
  • CHARACTER_SET_NAME;
  • COLLATION_NAME.

Все они содержат информацию о значении, возвращаемом функцией.

Поддержка XML

Пока ещё скромный XML-функционал дополнен новой командой LOAD XML, загружающей данные из XML-файла в таблицу БД. Команда дополняет уже имеющуюся в MySQL функцию XML-вывода, пример использования:

shell> mysql --xml -e 'SELECT * FROM mytable' > file.xml

При выполнении команды LOAD XML INFILE по умолчанию тег <row> интерпретируется как описание записи таблицы БД, но этот параметр может быть изменён опцией ROWS IDENTIFIED BY.

Команда LOAD XML воспринимает три различных формата XML:

  • Имя атрибута тега как имя колонки (поля) и значение атрибута как значение поля.

 <row column1="value1" column2="value2" .../>

  •  Имя тега как имя поля и содержимое тега как значение.

 <row>

<column1>value1</column1>

<column2>value2</column2>

</row>

  •  Атрибут name тега <field> как имя колонки и его содержимое как значение.

Рассмотрим пример работы команды (из руководства), файл test.xml:

<?xml version="1.0"?>

<list>

<person person_id="1" fname="Pekka" lname="Nousiainen"/>

<person person_id="2" fname="Jonas" lname="Oreland"/>

<person person_id="3"><fname>Mikael</fname><lname>Ronstrom</lname></person>

<person person_id="4"><fname>Lars</fname><lname>Thalmann</lname></person>

<person><field name="person_id">5</field><field name= "fname">Tomas</field><field name="lname">Ulin</field></person>

<person><field name="person_id">6</field><field name="fname">Martin</field><field name="lname">Skold</field></person>

</list>

Сначала необходимо создать таблицу:

CREATE TABLE person (

person_id INT NOT NULL PRIMARY KEY,

fname VARCHAR(40) NULL,

lname VARCHAR(40) NULL,

created TIMESTAMP

);

Теперь загружаем в таблицу значения из XML-файла (поменяв тег записи по умолчанию):

mysql> LOAD XML LOCAL INFILE 'person.xml'

-> INTO TABLE person

-> ROWS IDENTIFIED BY '<person>';

И смотрим результат:

Query OK, 6 rows affected (0.00 sec)

Records: 6 Deleted: 0 Skipped: 0 Warnings: 0

Что ещё?

  • Введена поддержка дополнительных кодировок Unicode: utf16, utf32, и 4-байтной utf8.
  • Появилась поддержка внешних комментариев для таблиц, колонок и индексов.
  • Команда RESET SLAVE больше не сбрасывает параметры соединения, как это было с момента её введения.
  • Устранена логическая ошибка – команда LOCK TABLES для транзакционных таблиц больше не подтверждает транзакцию автоматически.
  • Кроме того, ряд изменений и дополнений коснулся кластерного варианта сервера MySQL.

Полный список нововведений можно посмотреть в документации (http://dev.mysql.com/doc/refman/6.0/en/mysql-nutshell.html).

Что останется в прошлом?

Как всегда, при переходе к новой версии продукта чем-то приходится жертвовать, а кое-что и сознательно отвергать. Ниже приведён список устаревших конструкций, которым не нашлось места в новой версии сервера и их замены:

  • Ушла в прошлое системная переменная table_type (теперь есть аналог storage_engine).
  • Опция TYPE для хранилища данных, применяемая в командах CREATE TABLE и ALTER TABLE, заменена опцией ENGINE.
  • Вместо SHOW TABLE TYPES теперь предполагается использовать SHOW ENGINES.
  • Вместо переменной log_bin_trust_routine_creators теперь используем log_bin_trust_function_creators.
  • Отменён формат команды TIMESTAMP(N).
  • Туда же попали команды SHOW INNODB STATUS и SHOW MUTEX STATUS (замена – SHOW ENGINE INNODB STATUS).
  • Не используются больше LOAD TABLE ... FROM MASTER и LOAD DATA FROM MASTER .
  • Отменена команда SHOW PLUGIN. Теперь следует использовать SHOW PLUGINS.
  • Отменены все опции установки параметров репликации вида: --master-xxx, вместо них теперь используется команда CHANGE MASTER .

Вот собственно и всё, что нам пока обещано в новой версии популярной СУБД. Впрочем, можно заметить, что этого уже очень немало. Разработчики MySQL делают всё, чтобы их продукт не только не отставал от времени, но и стремительно догонял своих более солидных конкурентов.

Подождём выхода релиза MySQL 6 и оценим, насколько это им удалось.


Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru