SolidDB для MySQL

Питер Гулуцан

Solid Information Technology (www.soliddb.com/ www.solidtech.com) существует уже несколько лет. Хотя и не слишком заметная, компания познакомилась с ценителями мира SQL.

Недавно Solid стала распространителем MySQL Enterprise, и они также являются заказчиком MySQL. Продукт компании «solidDB for MySQL» (теперь называемый Solid) технически представляет собой серверную комбинацию MySQL (MyISAM) и механизма хранения solidDB. Механизм хранения выполняет тяжелую работу (такую ​​как файл ввода-вывода, поиск по индексу, восстановление файла журнала и т. Д.). Сервер MySQL отвечает за планирование и контакты (такие как синтаксический анализ SQL, оптимизация, обычный файл журнала и т. Д.). Некоторыми интересными механизмами хранения являются MyISAM в MySQL, InnoDB в InnoBase Oy и недавно опубликованный новый механизм Falcon для MySQL 5.1 (http://dev.MySQL.com/doc/refman/5.1/ en / se-falcon.html).

Скачать

Solid имеет некоторые фундаментальные отличия от других механизмов хранения: он недоступен в обычном дистрибутиве MySQL. Если вы хотите использовать Solid, вы должны скачать его с forge.MySQL.com или лучше всего на сайте компании: http://dev.soliddb.com/download/. Регистрационная форма доступна при посещении веб-сайта, но вы можете проигнорировать ее, щелкнув: «Нет, спасибо. Перейти к загрузкам». На момент написания информация на сайте:

solidmysql-5.0.27.0050 от 19 декабря 2006 г.
Окна
Двоичный файл Windows
Исходный код Windows
Руководство пользователя solidDB для MySQL для Windows (Руководство пользователя solidDB для MySQL на
Windows)
Примечания к выпуску
Linux 32-разрядная
32-битный двоичный файл Linux
Исходный код Linux
Руководство пользователя solidDB для MySQL для Linux (Руководство пользователя solidDB для MySQL на
Linux)
Примечания к выпуску
Linux 64-разрядная
64-битный двоичный файл Linux
Исходный код Linux
Руководство пользователя solidDB для MySQL для Linux
Примечания к выпуску

Мы можем надеяться, что Solid быстро поддержит все компоненты из списка MySQL Enterprise «Поддерживаемые платформы» http://www.MySQL.com/support/supportedplatforms/enterprise.html.

Но пользователи Solaris, HP-UX и Apple могут быть немного разочарованы.

Выберите 64-битную загрузку Linux и выберите папку / home / pgulutzan / Desktop в личном кабинете, загрузка имеет вид:

pgulutzan @ linux: ~ / Рабочий стол> cd / home / pgulutzan / Рабочий стол
pgulutzan @ linux: ~ / Рабочий стол> tar zxvf
solidmysql-5.0.27-Linux-x86_64-glibc23-0050.tar.gz
.
[danh sách các tập tin]
.
pgulutzan @ linux: ~ / Рабочий стол>
компакт-диск solidmysql-5.0.27-linux-x86_64-glibc23-0050
pgulutzan @ linux:
~ / Рабочий стол / solidmysql-5.0.27-Linux-x86_64-glibc23-0050>
su Пароль root:
Linux: /home/pgulutzan/Desktop/solidmysql-5.0.27-linux-x86_64-glibc23-0050
# bin / mysqld
—user = корень
—скип-нетворкинг
—default-storage-engine = твердый
solidDB для MySQL 5.0.27 — 06.00.0050
(Linux 2.6.13 AMD64 64-битная MT) Авторские права (C)
Компания Solid Information Technology Ltd 1993-2006 Запущена база данных.
070101 16:39:57 InnoDB: запущен;
порядковый номер журнала 0 12719128 070101 16:39:57
[ERROR] Невозможно открыть общую папку udf_example.so
(errno: 0 udf_example.so: невозможно открыть файл объектного файла: нет файла или каталога)
070101 16:39:57 [Note] bin / mysqld: готов к подключению.
Версия: ‘5.0.27’ сокет: ‘/tmp/MySQL.sock’ порт: 0 Источник
Распределение

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

Первое впечатление

Перед использованием механизма Solid просмотрите MySQL с клиентской программой MySQL:

MySQL> ВЫБРАТЬ ВЕРСИЮ ();
+ ———— +
| версия () |
+ ———— +
| 5.0.27 |
+ ———— +
1 ряд в комплекте (0,00 сек)

Прочтите на дисплее:

Только одна пригодная для использования версия — 5.0.27. Позже это будет «SolidDB для MySQL 5.1», но теперь мы не можем играть с новыми компонентами MySQL 5.1, такими как журнал событий, разделов или строк.

MySQL> ПОКАЗАТЬ ДВИГАТЕЛИ;
+ ———— + ——— + ————————— ————————— +
| Двигатель | Поддержка | Комментарий
|
+ ———— + ——— + ————————— ————————— +
| solidDB | ДА | Полностью дисковые транзакции с камерой
многоверсионный оптимистичный / пессимистичный контроль параллелизма |
.

Прочтите на дисплее:

В качестве механизмов хранения можно использовать Solid, домашний механизм MySQL и InnoDB. Мы можем использовать два механизма одновременно.

MySQL> ПОКАЗАТЬ ПЕРЕМЕННЫЕ КАК ‘solid%’;
+ —————————— + ———- +
| Имя_переменной | Значение |
+ —————————— + ———- +
| soliddb_cache_size | 67108864 |
| soliddb_durability_level | 3 |
| soliddb_logdir | |
| soliddb_backupdir | |
| soliddb_admin_command | |
| soliddb_checkpoint_deletelog | ВКЛ |
| soliddb_filespec | |
| soliddb_lock_wait_timeout | 30 |
| soliddb_db_block_size | 8192 |
| soliddb_log_block_size | 16384 |
| soliddb_backup_block_size | 65536 |
| soliddb_checkpoint_interval | 50000 |
| soliddb_checkpoint_time | 0 |
| soliddb_io_threads | 5 |
| soliddb_lockhash_size | 1000000 |
| soliddb_pessimistic | ВКЛ |
| soliddb_write_threads | 1 |
| soliddb_extend_increment | 500 |
| soliddb_readahead | 4 |
+ —————————— + ———- +
19 рядов в наборе (0,00 сек)

Прочтите на дисплее:

Некоторые переменные, связанные с Solid, вы можете использовать для настройки, но значения по умолчанию довольно хороши.

Сперва сплошной стол

MySQL>
СОЗДАТЬ БАЗУ ДАННЫХ твердого теста;
Запрос ОК, 1 бренд (0,00 сек)
MySQL>
ИСПОЛЬЗУЙТЕ твердый тест;
База данных изменена
MySQL>
СОЗДАТЬ ТАБЛИЦУ t (s1 INT, s2 VARCHAR (1000)) ENGINE = SOLIDDB;
Запрос ОК, 0 строковых объектов (0,01 сек)
MySQL>
СОЗДАТЬ ИНДЕКС i НА t (s1);
Запрос в порядке, затронуто 0 строк (0,03 сек)
Записей: 0 Дубликатов: 0 Предупреждений: 0
MySQL>
ВСТАВИТЬ В ЗНАЧЕНИЯ t (1, ‘a’);
Запрос ОК, 1 название бренда (0,01 сек)
MySQL>
ВЫБРАТЬ * ИЗ t;
+ —— + —— +
| s1 | s2 |
+ —— + —— +
| 1 | а |
+ —— + —— +
1 ряд в комплекте (0,00 сек)

Прочтите на дисплее:

Единственное, что нужно сделать, это предоставить информацию «ENGINE = SOLIDDB» при создании таблицы (на самом деле, вам не нужно объявлять это, если вы используете Solid в качестве механизма хранения). Команды SQL ничем не отличаются. При объявлении этой таблицы как Solid, MySQL будет знать, что он должен использовать механизм хранения Solid при работе с таблицей.

А теперь первая чековая транзакция.

MySQL>
УСТАНОВИТЬ @@ autocommit = 0;
Запрос ОК, 0 аргументов строки (0,00 сек)
MySQL>
НАЧАТЬ СДЕЛКУ;
Запрос ОК, 0 аргументов строки (0,00 сек)
MySQL>
ВСТАВИТЬ В ЗНАЧЕНИЯ t (2, ‘b’);
Запрос ОК, 1 бренд (0,00 сек)
MySQL>
ОТКАТ;
Запрос ОК, 0 аргументов строки (0,00 сек)
MySQL>
ВЫБРАТЬ * ИЗ t ГДЕ s1 = 2;
Пустой набор (0,00 сек)

Прочтите на дисплее:

Результат кода показывает: Solid — это механизм хранения «транзакций». Это отличается от MyISAM и больше похоже на InnoDB и Falcon.

Проверить точность времени

На веб-сайте Solid есть несколько различных команд для их собственной скорости и результатов тестирования, таких как TM1, с проверкой многих диаграмм, показывающих, что Solid работает быстрее, чем InnoDB:
http://www.solidtech.com/developers/CarrierGrade/TM1/SolidDB_TM1Benchmark.pdf

DELIMITER //
СОЗДАТЬ ПРОЦЕДУРУ p ()
НАЧИНАТЬ
ЗАЯВИТЬ v INT ПО УМОЛЧАНИЮ 0;
ПОКА v 10000 DO
ВСТАВИТЬ В ЗНАЧЕНИЯ t (v, ‘cde’);
УСТАНОВИТЬ v = v + 1;
КОНЕЦ ПОКА;
КОНЕЦ //
DELIMITER;
ВЫЗОВ p (); — Время это
ВЫБРАТЬ СУММУ (s1) ИЗ t; — Время это
ОБНОВЛЕНИЕ t SET s2 = CONCAT (s2, s2); — Время это

При выполнении такого теста с последней версией MySQL 5.1 объявите «engine = myisam» и «engine = innodb» вместо «engine = solid», результат будет (время в секундах)):

MyISAM InnoDB Solid
ВСТАВИТЬ 0,78 3,92 9,01
ОБНОВЛЕНИЕ 0,01 0,03 0,20
УДАЛИТЬ 0,13 1,47 0,94

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

Недостающие

Некоторые компоненты не поддерживаются в Solid. Не все компоненты приветствуются, но большинство из них присутствует в некоторых других механизмах хранения MySQL. И многие жители SQL-сообщества пожалеют об их отсутствии.

  1. Существует только один тип сопоставления «Латинский верхний регистр».
    Только один тип соответствия слов — latin1_general_cs. Если какой-либо другой столбец не является набором латинских символов или без заглавных букв, вы не сможете его найти.

  2. Полный текст (необходимо ввести полное имя)
    Это не недостаток Solid, но тип индекса «полнотекстовый» находится в MyISAM и не был изменен.

<

p style=»text-align: justify;»>Подводя итоги и выполняя некоторые экстраполяции в разделе отладки, по номеру электронной почты службы технической поддержки Solid, следующие компоненты MySQL недоступны в Solid:

Индекс FULLTEXT
ВСТАВИТЬ ОТЛОЖЕН
РЕЗЕРВНОЕ КОПИРОВАНИЕ
ИНДЕКС НАГРУЗКИ
ОПТИМИЗИРОВАТЬ
SAVEPOINT
Беззнаковый BIGINT
Столбцы UNIQUE имеют более одного значения NULL
Большинство видов сравнений.
Все новые компоненты MySQL 5.1.
Некоторые платформы.

Некоторые новые компоненты пока недоступны на других устройствах хранения.

В Solid есть некоторые вещи, которые вы не сможете найти ни в одном другом механизме MySQL. Например, на Falcon недоступны внешние ключи.

Внешние ключи

У Solid есть некоторые недостатки, такие как InnoDB (например, невозможность ссылаться на встроенный) и некоторые другие недостатки (вы можете найти жалобы на них в Bug Tracker: http://dev.soliddb.com/bug). Но Solid проверяет нарушение внешнего ключа внешнего ключа в конце команды, а InnoDB — нет. Вот пример, в котором я использую команду UPDATE таблицы первичных ключей. Это может быть причиной взлома внешнего ключа в команде, но не в конце. При объявлении: двигатель = solid, подтвержден и пройден. Что касается двигателя innodb, то тест не удался.

MySQL>
создать таблицу t1a (s1 int, первичный ключ (s1)) engine = solid;
Запрос в порядке, затронуто 0 строк (0,02 сек)
MySQL>
создать таблицу t1b (s1 int, внешний ключ (s1), который ссылается на t1a (s1))
двигатель = твердый;
Запрос в порядке, затронуто 0 строк (0,02 сек)
MySQL>
вставить в t1a значения (1), (2);
Запрос в порядке, поддерживается 2 строки (0,00 сек)
Записей: 2 Дубликатов: 0 Предупреждений: 0
MySQL>
вставить в значения t1b (1);
Запрос ОК, 1 бренд (0,00 сек)
MySQL>
обновить t1a установить s1 = s1 — 1; / * Это не вызовет ошибки! * /
Запрос в порядке, затронуты 2 строки (0,04 сек)
Совпадение строк: 2 Изменено: 2 Предупреждения: 0
MySQL>
создать таблицу t7a (s1 int, первичный ключ (s1)) engine = innodb;
Запрос в порядке, 0 поддерживаемых строк (0,05 сек)
MySQL>
создать таблицу t7b (s1 int, внешний ключ (s1) относится к t7a (s1))
двигатель = innodb;
Запрос в порядке, 0 поддерживаемых строк (0,05 сек)
MySQL>
вставить в t7a значения (1), (2);
Запрос в порядке, поддерживается 2 строки (0,00 сек)
Записей: 2 Дубликатов: 0 Предупреждений: 0
MySQL>
вставить в значения t7b (1);
Запрос ОК, 1 название бренда (0,01 сек)
MySQL>
обновить t7a установить s1 = s1 — 1; / * Это вызовет ошибку! * /
ОШИБКА 1451 (23000): невозможно удалить или обновить родительскую строку: внешний ключ
ограничение не работает

Сильная функция восстановления

Solid может быстро и точно восстановиться после проблемы. Я пробовал несколько распространенных тестов, таких как «kill -9», когда программа обновляет большую таблицу. Процесс не прерывается.

Выберите оптимистичный или пессимистичный

Оптимистичные и «многоверсионные» планы (несколько версий) очень популярны, как в InnoDB / PostgreSQL / Oracle / Falcon или в Solid (по умолчанию). Но пезимистический план (формирование традиционных и знакомых «ключей» для управления полимеризацией) доступен только в Solid (с параметром —soliddb_pessimistic). Это замечательно, место для пессимизма в планах магазина и простота перехода с DB2 или SQL Server. Это большая уникальная особенность Solid.

Ведение транзакций

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

Есть некоторые ссылки, но лучше всего загрузить и протестировать программное обеспечение напрямую. Это довольно легко понять и совершенно бесплатно.

Похожие записи

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

Ваш адрес email не будет опубликован.