Spec-Zone .ru
спецификации, руководства, описания, API

14.8. MERGE Механизм хранения

14.8.1. MERGE Табличные Преимущества и Недостатки
14.8.2. MERGE Табличные проблемы

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 таблицы, можно использовать один из следующих методов:

Определения базовой таблицы и индексируют, должен соответствовать близко определению MERGE таблица. Соответствие проверяется, когда таблица, которая является частью a MERGE таблица открывается, не когда MERGE таблица составляется. Если какая-либо таблица приводит к сбою проверки соответствия, работу, которая инициировала открытие табличных сбоев. Это означает что изменения для определений таблиц в пределах a MERGE может вызвать отказ когда MERGE к таблице получают доступ. Проверки соответствия, которым применяются к каждая таблица:

Если a MERGE таблица не может быть открыта или использоваться из-за проблемы с базовой таблицей, CHECK TABLE информация та о дисплеях, о который таблица, вызванная проблема.

Дополнительные Ресурсы