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

14.2.9.7. Внутренности InnoDB memcached Плагин

Этот раздел объясняет детали базовых таблиц, используемых InnoDB / плагин memcached.

Сценарий конфигурации устанавливает 3 таблицы, необходимые InnoDB memcached. Эти таблицы составляются в выделенной базе данных innodb_memcache:

mysql> use innodb_memcache;Database changedmysql> show tables;+---------------------------+| Tables_in_innodb_memcache |+---------------------------+| cache_policies            || config_options            || containers                |+---------------------------+3 rows in set (0.01 sec)

Таблицы:

containers - Эта таблица является самой важной таблицей для memcached демона. Это описывает таблицу или таблицы, используемые, чтобы сохранить значения memcached. Следует произвести изменения в этой таблице, чтобы начать использовать интерфейс memcached с один или больше Ваших собственных таблиц, вместо того, чтобы только экспериментировать с test.demo_test таблица.

Отображение делается посредством определения соответствующих значений столбцов в таблице:

mysql> desc containers;+------------------------+--------------+------+-----+---------+-------+| Field                  | Type         | Null | Key | Default | Extra |+------------------------+--------------+------+-----+---------+-------+| name                   | varchar(50)  | NO   | PRI | NULL    |       || db_schema              | varchar(250) | NO   |     | NULL    |       || db_table               | varchar(250) | NO   |     | NULL    |       || key_columns            | varchar(250) | NO   |     | NULL    |       || value_columns          | varchar(250) | YES  |     | NULL    |       || flags                  | varchar(250) | NO   |     | 0       |       || cas_column             | varchar(250) | YES  |     | NULL    |       || expire_time_column     | varchar(250) | YES  |     | NULL    |       || unique_idx_name_on_key | varchar(250) | NO   |     | NULL    |       |+------------------------+--------------+------+-----+---------+-------+9 rows in set (0.02 sec)

Вышеупомянутые 5 значений столбцов (имя таблицы, ключевой столбец, столбец значений и индексируют) должны быть предоставлены. Иначе, установка перестанет работать.

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

Таблица cache_policies определяет, использовать ли InnoDB как хранилище данных memcached (innodb_only), или использовать традиционный memcached механизм в качестве backstore (cache-only), или оба (caching). В последнем случае, если memcached не может найти ключ в памяти, он ищет значение в InnoDB таблица.

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

separator: Разделитель, используемый, чтобы разделить значения длинной строки в меньшие значения для многократных значений столбцов. По умолчанию это | символ. Например, если Вы определили col1, col2 как столбцы значений, И Вы определяете | как разделитель, Вы могли дать следующую команду в memcached, чтобы вставить значения в col1 и col2 соответственно:

set keyx 10 0 19valuecolx|valuecoly

Так valuecol1x сохранен в col1 и valuecoly сохранен в col2.

table_map_delimiter: Символ, разделяющий имя схемы и имя таблицы, когда Вы используете @@ нотация на ключевое имя, чтобы получить доступ к ключу в определенной таблице. Например, @@t1.some_key и @@t2.some_key имейте то же самое значение ключа, но сохранены в различных таблицах и не, конфликтуют - также.

Таблицы в качестве примера

Наконец, сценарий конфигурации составляет таблицу demo_test в test база данных как пример. Это также позволяет Демону Memcached, чтобы сразу работать, не составляя дополнительных таблиц.

Записи в container таблица определяет, какой столбец используется для какой цель как описано выше:

mysql> select * from innodb_memcache.containers;+------+-----------+-----------+-------------+---------------+-------+------------+--------------------+------------------------+| name | db_schema | db_table  | key_columns | value_columns | flags | cas_column | expire_time_column | unique_idx_name_on_key |+------+-----------+-----------+-------------+---------------+-------+------------+--------------------+------------------------+| aaa  | test      | demo_test | c1          | c2            | c3    | c4         | c5                 | PRIMARY                |+------+-----------+-----------+-------------+---------------+-------+------------+--------------------+------------------------+1 row in set (0.00 sec)mysql> desc test.demo_test;+-------+---------------------+------+-----+---------+-------+| Field | Type                | Null | Key | Default | Extra |+-------+---------------------+------+-----+---------+-------+| c1    | varchar(32)         | NO   | PRI |         |       || c2    | varchar(1024)       | YES  |     | NULL    |       || c3    | int(11)             | YES  |     | NULL    |       || c4    | bigint(20) unsigned | YES  |     | NULL    |       || c5    | int(11)             | YES  |     | NULL    |       |+-------+---------------------+------+-----+---------+-------+5 rows in set (0.01 sec)

Когда никакой табличный ID не требуют через @@ нотация на ключевое имя: