Spec-Zone .ru
спецификации, руководства, описания, API
|
MERGE
механизм хранения, также известный как MRG_MyISAM
механизм, набор идентичных MyISAM
таблицы, которые могут использоваться в качестве
один. "Идентичный" означает, что все таблицы
имеют идентичный столбец и индексируют информацию. Невозможно объединиться MyISAM
таблицы, в которых столбцы перечисляются в различном порядке, не имеют точно тех же самых столбцов, или имеют
индексирование в различном порядке. Однако, любой из MyISAM
таблицы могут быть
сжаты с myisampack. См. Раздел
4.6.5, "myisampack — Генерируют Сжатые, Таблицы MyISAM
Только для чтения". Различия в табличных опциях такой как AVG_ROW_LENGTH
, MAX_ROWS
, или PACK_KEYS
не иметь значения.
Альтернатива a MERGE
таблица является разделенной таблицей, которая хранит разделы
единственной таблицы в отдельных файлах. Разделение позволяет некоторым операциям выполняться более эффективно и
не ограничивается MyISAM
механизм хранения. Для получения дополнительной информации
см. Главу 18, Деля.
Когда Вы создаете a MERGE
таблица, MySQL создает два файла на диске. У файлов есть
имена, которые начинаются с имени таблицы и имеют расширение, чтобы указать на тип файла. .frm
хранилища файлов формат таблицы, и .MRG
файл
содержит имена базового MyISAM
таблицы, которые должны использоваться в качестве
один. Таблицы не должны быть в той же самой базе данных как MERGE
таблица.
Можно использовать SELECT
, DELETE
,
UPDATE
,
и INSERT
на MERGE
таблицы. Вы должны иметь SELECT
, DELETE
, и UPDATE
полномочия на MyISAM
таблицы, которые Вы
отображаете на a MERGE
таблица.
Использование MERGE
таблицы влекут за собой следующий вопрос
безопасности: Если у пользователя есть доступ к MyISAM
таблица t
, тот пользователь может создать a MERGE
таблица m
это получает доступ t
. Однако, если полномочия пользователя на t
впоследствии отменяются, пользователь может продолжать
получать доступ t
делая так через m
.
Использование DROP TABLE
с a MERGE
таблица отбрасывает только
MERGE
спецификация. На базовые таблицы не влияют.
Создать a MERGE
таблица, следует определить a UNION=(
опция, которая указывает который list-of-tables
)MyISAM
таблицы, чтобы использовать. Можно дополнительно определить INSERT_METHOD
опция, чтобы управлять, как вставляет в MERGE
таблица имеет место. Используйте значение FIRST
или LAST
вызвать вставляет, чтобы быть сделанным в первой или последней базовой
таблице, соответственно. Если Вы определяете нет INSERT_METHOD
опция или если Вы
определяете это со значением NO
, вставляет в MERGE
таблица не разрешается, и пытается сделать так результат по ошибке.
Следующий пример показывает, как создать a MERGE
таблица:
mysql>CREATE TABLE t1 (
->a INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
->message CHAR(20)) ENGINE=MyISAM;
mysql>CREATE TABLE t2 (
->a INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
->message CHAR(20)) ENGINE=MyISAM;
mysql>INSERT INTO t1 (message) VALUES ('Testing'),('table'),('t1');
mysql>INSERT INTO t2 (message) VALUES ('Testing'),('table'),('t2');
mysql>CREATE TABLE total (
->a INT NOT NULL AUTO_INCREMENT,
->message CHAR(20), INDEX(a))
->ENGINE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST;
Отметьте тот столбец a
индексируется как a PRIMARY KEY
в базовом MyISAM
таблицы, но не в MERGE
таблица. Там
это индексируется, но не как a PRIMARY KEY
потому что a MERGE
таблица не может осуществить уникальность по набору базовых таблиц. (Точно
так же столбец с a UNIQUE
индексируйте в базовых таблицах, должен быть индексирован
в MERGE
таблица, но не как a UNIQUE
индексировать.)
После создания MERGE
таблица, можно использовать это, чтобы выпустить запросы,
которые работают на группе таблиц в целом:
mysql> SELECT * FROM total;
+---+---------+| a | message |+---+---------+| 1 | Testing || 2 | table || 3 | t1 || 1 | Testing || 2 | table || 3 | t2 |+---+---------+
К перекарте a MERGE
таблица к различному набору MyISAM
таблицы, можно использовать один из следующих методов:
DROP
MERGE
таблица и
воссоздает это.
Использовать ALTER TABLE
изменить список базовых таблиц. tbl_name
UNION=(...)
Также возможно использовать ALTER TABLE ... UNION=()
(то есть, с пустым
UNION
пункт), чтобы удалить все базовые таблицы.
Определения базовой таблицы и индексируют, должен соответствовать близко определению MERGE
таблица. Соответствие проверяется, когда таблица, которая является частью a
MERGE
таблица открывается, не когда MERGE
таблица
составляется. Если какая-либо таблица приводит к сбою проверки соответствия, работу, которая инициировала
открытие табличных сбоев. Это означает что изменения для определений таблиц в пределах a MERGE
может вызвать отказ когда MERGE
к таблице получают доступ. Проверки соответствия,
которым применяются к каждая таблица:
Базовая таблица и MERGE
у таблицы должно быть то же
самое число столбцов.
Порядок следования столбцов в базовой таблице и MERGE
таблица должна соответствовать.
Дополнительно, спецификация для каждого соответствующего столбца в родителе MERGE
таблица и базовые таблицы сравниваются и должны удовлетворить эти
проверки:
Столбец вводит базовую таблицу и MERGE
таблица должна быть равной.
Длина столбца в базовой таблице и MERGE
таблица должна быть равной.
Столбец базовой таблицы и MERGE
таблица
может быть NULL
.
Базовая таблица должна иметь, по крайней мере, так многие индексируют как MERGE
таблица. Базовая таблица может иметь, больше индексирует чем MERGE
таблица, но не может иметь меньше.
Известная проблема существует, где индексирует на тех же самых столбцах, должен быть в
идентичном порядке, в обоих MERGE
таблица и базовое MyISAM
таблица. См. Ошибку #33653.
Каждый индексирует, должен удовлетворить эти проверки:
Индексировать тип базовой таблицы и MERGE
таблица должна быть тем же самым.
Число индексирует части (то есть, многократные столбцы в пределах
составного объекта индексируют) в индексировать определении для базовой таблицы и MERGE
таблица должна быть тем же самым.
Поскольку каждый индексирует часть:
Индексируйте длины части, должно быть равным.
Индексируйте типы части, должно быть равным.
Индексируйте языки части, должно быть равным.
Проверьте, индексируют ли части, может быть NULL
.
Если a MERGE
таблица не может быть открыта или использоваться из-за проблемы с
базовой таблицей, CHECK TABLE
информация та о дисплеях, о который таблица, вызванная проблема.
Форум, выделенный MERGE
механизм хранения доступен в