Spec-Zone .ru
спецификации, руководства, описания, API
|
Этот раздел описывает, как memcached демон интегрируется в MySQL Server, чтобы помочь понять, как этот подход сравнивается с другими методами, которые комбинируют компоненты NoSQL или интерфейсы с бэкэндом MySQL.
Когда интегрировано с MySQL Server, memcached реализуется как
демон плагина MySQL, получая доступ InnoDB
механизм хранения непосредственно и
обход уровня SQL:
Функции обеспечили в текущем выпуске:
memcached как плагин демона mysqld: и mysqld и memcached, выполненный в том же самом пространстве процесса, с очень низким доступом задержки к данным.
Прямой доступ к InnoDB
таблицы, обходя синтаксический
анализатор SQL, оптимизатор, и даже уровень API Обработчика.
Стандарт memcached протоколы, и
основанный на тексте протокол и протокол двоичной синхронной передачи данных. InnoDB
+ комбинация memcached проходит все 55 тестов
совместимости от memcapable команды.
Многоколонная поддержка: можно отобразить многократные столбцы в часть "значения" хранилища ключа/значения со значениями столбцов, разграниченными определенным пользователем символом разделителя.
По умолчанию Вы используете memcached
протокол, чтобы считать и записать данные непосредственно в InnoDB
, и
позвольте MySQL управлять кэшированием в памяти через InnoDB
пул буферов.
Настройки по умолчанию представляют комбинацию высокой надежности с наименьшим количеством
неожиданностей для приложений базы данных. Например, настройки по умолчанию избегают незафиксированных
данных на стороне базы данных, или устаревших данных, возвращенных для memcached
get
запросы.
Усовершенствованные пользователи могут сконфигурировать систему как традиционный
memcached сервер, со всеми данными, кэшируемыми только в
memcached механизме значения по умолчанию (память), или
использовать комбинацию "memcached механизм значения по умолчанию"
(кэширование памяти) и InnoDB
механизм memcached
(InnoDB
как бэкэнд персистентное хранение).
Можно управлять, как часто между данными передают назад и вперед InnoDB
и операции memcached через innodb_api_bk_commit_interval
, daemon_memcached_r_batch_size
, и daemon_memcached_w_batch_size
параметры конфигурации. Оба пакетное
значение по умолчанию опций размера к значению 1 для максимальной надежности.
Можно определить любые memcached
параметры конфигурации через переменную конфигурации MySQL daemon_memcached_option
. Например, Вы могли бы изменить порт, на
котором слушает memcached, уменьшите максимальное
количество одновременных соединений, измените максимальную емкость памяти для пары ключ/значение, или
включите отладочным сообщениям для журнала ошибок.
Параметр конфигурации innodb_api_trx_level
позволяет Вам управлять уровнем
изоляции транзакции на запросах, обработанных интерфейсом memcached. Хотя у
memcached есть понятие транзакций, Вы могли бы использовать
это свойство, чтобы управлять, как скоро memcached видит
изменения, вызванные SQL-операторами, если Вы делаете заявления DML на той же самой
таблице это интерфейсы memcached с. По умолчанию это
устанавливается в READ UNCOMMITTED
.
Другой параметр конфигурации innodb_api_enable_mdl
. "MDL"
обозначает "блокировку метаданных". Это
в основном блокирует таблицу от уровня MySQL, так, чтобы отображенная таблица не могла быть отброшена
или изменена DDL через интерфейс SQL. Без
блокировки таблица может быть отброшена от уровня MySQL, но будет сохранена в хранении InnoDB до memcached, или любой другой пользователь прекращает
использовать это.
InnoDB
Пользователи MySQL могли бы уже быть знакомыми с использованием memcached
наряду с MySQL, как описано в Разделе 15.6, "Используя MySQL с
memcached". Этот раздел описывает сходства и различия
между информацией в том разделе, и при использовании InnoDB
функции интеграции
memcached, который встраивается в MySQL. Ссылка в начале каждого
элемента идет в связанную информацию о традиционном memcached
сервере.
Установка: Поскольку memcached библиотека идет с сервером MySQL, установка и
установка являются прямыми. Вы выполняете сценарий SQL, чтобы установить таблицу для memcached, чтобы использовать, выпустить одноразовое
install plugin
оператор, чтобы включить memcached,
и добавить к конфигурационному файлу MySQL или сценарию запуска любой требовал, чтобы memcached опции, например использовали различный
порт. Вы могли бы все еще установить регулярное memcached
распределение, чтобы получить дополнительные утилиты, такие как memcp, memcat, и memcapable.
Развертывание: Это типично, чтобы
выполнить большие количества низкой емкости memcached
серверы. Поскольку InnoDB
+ комбинация memcached
имеет 1:1 отношение между базой данных и memcached
серверами, типичное развертывание включает меньшее число умеренных или мощных серверов, машины, которые
уже выполняли MySQL. Преимущество этой конфигурации сервера больше для того, чтобы улучшить
эффективность каждого отдельного сервера базы данных чем в наслаждении неиспользованной памяти или
распределительных поисков через большие количества серверов. В конфигурации значения по умолчанию очень
немного памяти используется для memcached, и поиски в
памяти подаются от InnoDB
пул буферов, который
автоматически кэширует последний раз используемые и наиболее часто используемые данные. Как в
традиционном экземпляре сервера MySQL, сохраните значение innodb_buffer_pool_size
параметр конфигурации столь же высокий как
практичный (не вызывая оповещение на уровне ОС), так, чтобы такая большая рабочая нагрузка насколько
возможно была сделана в памяти.
Истечение: По умолчанию (то есть, с
кэширующейся политикой innodb_only
), последние данные от InnoDB
таблица всегда возвращается, таким образом, опции истечения не
имеют никакого практического эффекта. Если Вы изменяете кэширующуюся политику на caching
или cache-only
, работа опций истечения как обычно, но запрошенные данные
могла бы быть устарелой, если бы это было обновлено в базовой таблице прежде, чем это истечет от
кэш-памяти.
Пространства имен: memcached походит на единственный гигантский каталог, где
препятствовать файлам конфликтовать друг с другом, Вы могли бы дать им тщательно продуманные имена с
префиксами и суффиксами. Интегрированный InnoDB
/ сервер memcached позволяет Вам использовать эти те же самые
соглашения о присвоении имен для ключей с одним дополнением. Ключевые имена формата @@
.table_id
.key
table_id
декодируются, чтобы сослаться на определенное
таблица, используя отображающиеся данные от innodb_memcache.containers
таблица. key
ищется в или пишется указанной таблице.
@@
нотация только работает на человека, призывает get
,
add
, и set
функции, не другие такой как
incr
или delete
. Чтобы определять таблицу
значения по умолчанию для всех последующих memcached
операций в пределах сеанса, выполните a get
запрос используя @@
нотация и табличный ID, но без ключевой части. Например:
get @@table_x
Последующий get
, set
, incr
, delete
и другие операции используют
таблицу, определяемую table_x
в innodb_memcache.containers.name
столбец.
Хеширование и
распределение: конфигурация значения по умолчанию, с кэширующейся политикой innodb_only
,
является подходящим для традиционной конфигурации развертывания, где все данные доступны на всех
серверах, таковы как ряд ведомых серверов репликации.
Если Вы физически делите данные, как в sharded конфигурации, можно разделить данные через несколько
машин, работающих InnoDB
и memcached объединенный сервер, и использование
традиционный memcached хеширующий механизма, чтобы
направить запросы к определенной машине. На стороне MySQL обычно Вы позволили бы всем данным быть
вставленными add
запросы к memcached так соответствующие значения были
сохранены в базе данных на соответствующем сервере.
Эти типы развертывания лучшие методы все еще шифруются.
Использование памяти: По
умолчанию (с кэширующейся политикой innodb_only
), memcached протокол передает информацию назад и вперед с
InnoDB
таблицы, и фиксированный размер InnoDB
пул буферов обрабатывает поиски в памяти, а не memcached
рост использования памяти и уменьшение. Относительно немного памяти используется на memcached стороне.
Если Вы переключаете кэширующуюся политику на caching
или cache-only
, нормальные правила memcached использования памяти применяются. Память для
memcached значений данных выделяется с точки зрения
"плит". Можно управлять размером
плиты и максимальной памятью, используемой для memcached.
Так или иначе можно контролировать и диагностировать интегрированного memcached
демона, используя знакомую систему статистики, к
которой получают доступ через стандартный протокол, например по сеансу telnet. Поскольку дополнительные утилиты не
включаются с интегрированным демоном, чтобы использовать memcached-tool
сценарий, установите полное memcached
распределение.
Использование потока: потоки MySQL и потоки memcached должны сосуществовать на том же самом сервере, таким образом, любые пределы, наложенные на потоки операционной системой, применяются к этому общему количеству.
Использование журнала: Поскольку memcached демон выполняется рядом с сервером MySQL и пишет в
stderr
, -v
, -vv
,
и -vvv
опции для того, чтобы зарегистрировать запись их вывод к журналу ошибок MySQL.
операции memcached: Все знакомые операции такой как get
, set
, add
, и
delete
доступны. Сериализация (то есть, точный строковый формат, чтобы
представить сложные структуры данных) зависит от интерфейса языка.
delete(key, [, time]): Deletes the key and its associated item from the cache. If you supply a time, then adding another item with the specified key is blocked for the specified period.flush_all: Invalidates (or expires) all the current items in the cache. Technically they still exist (they are not deleted), but they are silently destroyed the next time you try to access them.
Используя memcached как фронтэнд MySQL: Именно это InnoDB
интеграция с memcached -
все о. Соединение этих компонентов улучшает производительность Вашего приложения. Создание InnoDB
передачи данных дескриптора между памятью и диском упрощают логику
Вашего приложения.
Утилиты: сервер MySQL
включает libmemcached
библиотека, но не дополнительные утилиты командной
строки. Чтобы получить команды, такие как memcp, memcat, и memcapable команды, устанавливают полное memcached распределение. Когда memrm и memflush
удаляют элементы из кэша, они также удаляются из базового InnoDB
таблица.
Интерфейсы
программирования: можно получить доступ к серверу MySQL через InnoDB
и
комбинация memcached, используя тот же самый язык как
всегда: C и C++, Java,
Perl, Python,
PHP, и Ruby.
Определите имя узла сервера и порт как с любым другим memcached сервером. По умолчанию интегрированный memcached сервер слушает на том же самом порту как
обычно, 11211
. Можно использовать и текст
и протоколы двоичной синхронной передачи данных. Можно настроить поведение
функций memcached во времени выполнения. Сериализация (то
есть, точный строковый формат, чтобы представить сложные структуры данных) зависит от интерфейса языка.
Часто задаваемые вопросы: у MySQL был обширный
memcached FAQ для нескольких выпусков. В MySQL 5.7 ответы
являются в значительной степени тем же самым, за исключением того, что использование InnoDB
таблицы как носитель для memcached данных означают, что можно использовать эту
комбинацию для более интенсивных записью приложений чем прежде, а не как кэш только для чтения.
Для более подробного взгляда на работы этой функции см. Раздел 14.2.9.7, "Внутренности InnoDB memcached Плагин".