WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
Эта секция предоставляет информацию о Memcache API для NDB Cluster,
доступном с NDB 7.2.2, который позволяет получить доступ к данным
NDB Cluster, используя протокол memcache. Memcached распределенный сервер кэширования
в памяти, используя основанный на простом тексте протокол, обычно
используемый для хранилищ данных значения ключа, с клиентами, доступными для
многих платформ и языков программирования. Новый выпуск сервера
memcached доступен на
memcached.org. Memcache API для NDB Cluster доступно с NDB 7.2.2.
Этот API осуществляется как загружаемый механизм хранения для memcached
версии 1.6 и позже, который использует архитектуру механизма хранения.
Этот API может использоваться, чтобы обеспечить постоянное хранилище данных
NDB Cluster, которое является доступным с использованием протокола
кэш-памяти. Для сервера
memcached
также возможно обеспечить строго определенный интерфейс к существующему
NDB Cluster, строя таблицы таким образом, что администратор может точно
управлять тем, на какие таблицы и колонки ссылаются конкретные ключи
кэш-памяти и значения, и какие операции позволены на этих ключах и значениях.
Стандартное кэширование memcached
включено в дистрибутив NDB Cluster. Каждый сервер кэш-памяти, в
дополнение к обеспечению прямого доступа к данным в NDB Cluster,
в состоянии кэшировать данные в местном масштабе и служит (немного) запросам
от этого местного кэша. Как с отображениями таблицы и колонки, политика кэша
конфигурируема на основе префикса ключа кэш-памяти. Поддержка Memcache API строится автоматически, используя исходные тексты
memcached и libevent, включенные в NDB Cluster, собирая
NDB 7.2.3 или позже из исходного текста. По умолчанию
make install устанавливает
memcached в подкаталог
Можно отключить использование связанного memcached, строя ndbmemcache
при помощи опции
Для получения дополнительной информации о вариантах
CMake, касающихся ndbmemcache,
см. Options for Compiling NDB Cluster. Для получения общей информации о сборке NDB Cluster см.
Building NDB Cluster from Source on Linux и
Compiling and Installing NDB Cluster from Source on Windows.
Для получения информации о сборке MySQL Server см.
Installing MySQL from Source, а также
MySQL Source-Configuration Options. Следующий список содержит опции командной строки
memcached, которые особенно
интересны, работая с ndbmemcache. Определяет механизм (модуль), который будет динамично загружен на запуске
memcached (версия 1.6 или позже). Если этот выбор не определяется, memcached пытается загрузить механизм по
умолчанию, который обеспечивает тот же самый механизм кэширования, как
используется в memcached 1.4 и предыдущих версиях. Чтобы загрузить механизм NDB, используйте этот выбор как показано здесь:
Определяет возможности для использования загруженного механизма.
Варианты даны как пары См. раздел 6.4
для списка параметров конфигурации NDB memcached. Определяет число рабочих потоков, которые будут использоваться memcached.
Поскольку memcached использует управляемую событиями модель, в которой каждый
рабочий поток должен быть в состоянии насыщать ядро процессора, количество
рабочих потоков должно быть приблизительно тем же самым, как количество ядер
процессора, которые должен использовать memcached. В некоторых случаях добавление рабочих потоков не улучшает работу, если вы
также не обеспечиваете дополнительные связи с NDB Cluster.
Умолчание (4 потока memcached и 2 связи с кластером) должно нормально
работать в большинстве случаев. Порт TCP по умолчанию является портом 11211. Порт UDP по умолчанию 11211. Установка этого выбора к 0
отключает поддержку UDP. Напечатать справочную информацию. Для получения общей информации о параметрах командной строки
memcached см. документацию
http://code.google.com/p/memcached/wiki/NewStart. Опции настройки NDB memcache. Механизм NDB поддерживает следующие
параметры конфигурации для использования с
memcache Позволяет писать трассировочную информацию отладки к
Поскольку вывод отладки может быть довольно большой, необходимо позволить
этот выбор только как диагностический инструмент, а не в производстве. По умолчанию этот выбор Этот выбор берет в качестве его значения строку подключения NDB Cluster
(см. NDB Cluster Connection Strings), указывающую на основной
NDB Cluster то есть, NDB Cluster, в котором сохранена база данных
конфигурации Значение по умолчанию Позволяет реконфигурацию онлайн (перезагрузку конфигурации, сохраненной в
информационной базе данных Этот выбор позволен ( Устанавливает роль, принятую этим memcached сервером. Роль соответствует
ряду отображений ключевого префикса, описанных в базе данных конфигурации
Роль по умолчанию Пример показывают здесь: Этот выбор управляет некоторыми продвинутыми аспектами того, как механизм
NDB отправляет запросы NDB Cluster.
Эти опции S-scheduler описаны в следующем списке:
Начальная конфигурация.
Когда механизм NDB запускается, его самые важные параметры командной строки
это строка подключения и роль сервера. Строка подключения используется, чтобы
соединиться с конкретным кластером, названным основным, который содержит
схему конфигурации. Таблицы в схеме конфигурации прочитаны, чтобы
восстановить ряд отображений ключевого префикса для данной роли сервера.
Эти отображения инструктируют сервер, как ответить на операции по кэш-памяти
на конкретных ключах на основе крайней левой части ключа.
Например, они могут определить, что данные хранятся в
колонках определенной таблицы. Эта таблица может быть сохранена в том же
самом кластере, как схема конфигурации или в другом.
У сервера кэш-памяти могут быть связи с несколькими различными кластерами,
и много серверов кэш-памяти могут соединиться с единственным кластером, но
со множеством ролей. Схема конфигурации ndbmemcache.
Когда механизм кэш-памяти NDB запускается, он соединяется с кластером и ищет
схему конфигурации ndbmemcache там. Если схема не найдена, он закрывается. Схема описана (с полными комментариями) в файле
ndb_memcache_metadata.sql. Главное понятие схемы это отображение ключевого префикса.
Это берет префикс ключа кэш-памяти и отображает его к определенной
контейнерной таблице на конкретном кластере с конкретной политикой кэша. Роль сервера определяется как ряд отображений ключевого префикса, которые
осуществит сервер memcached. Каждый раз, когда сервер memcached начат с конкретной ролью сервера
(от параметров командной строки), эта роль сервера должна существовать в
таблице ndbmemcache.server_roles. В следующей таблице перечислены имена таблиц и описания для таблиц,
которые принадлежат схеме конфигурации
Таблица 6.1. Схема конфигурации ndbmemcache Для каждого кластера вмещает числовой id и строку подключения.
Столбец microsec_rtt используется для исполнительной настройки.
Рекомендуется использовать значение по умолчанию этой колонки. Посмотрите
Autotuning. Отображает имя политики для установки правил get, set, delete и flush.
Столбец Дополнительная информация о политике кэша может быть найдена в
тексте после таблицы. Таблица контейнеров описывает, как сервер может использовать таблицу
базы данных, чтобы хранить данные. Дополнительная информация о политике кэша может быть найдена в
тексте после таблицы. Таблица У этой таблицы также есть столбец update_timestamp. Он может быть
обновлен, чтобы позволить реконфигурацию онлайн. Посмотрите
здесь. Дополнительная информация о политике кэша может быть найдена в
тексте после таблицы. Здесь крайняя левая часть ключа кэш-памяти соединена с cluster ID,
контейнером и политикой кэша, чтобы сделать
key prefix mapping. Дополнительная информация о политике кэша может быть найдена в
тексте после таблицы. Политика кэша. Есть четыре стратегических типа:
Столбцы таблицы контейнеров. Колонки в таблице
Ключевые отображения. server_role_id числовой ролевой идентификатор сервера, который
ссылается на таблицу memcache_server_roles. key_prefix последовательность, которая соответствует крайней левой
части ключа кэш-памяти. Если эта последовательность будет пуста, то
определенный префикс будет "префиксом по умолчанию".
Префикс по умолчанию соответствует любому ключу кэш-памяти, который не
соответствует некоторому более определенному префиксу. cluster_id это int, который ссылается на таблицу ndb_clusters.
policy последовательность, которая ссылается на стратегическое имя в
таблице cache_policies. container контейнерное имя, которое ссылается на таблицу containers.
В следующей таблице перечислены имена таблиц и описания для
неконфигуруемой регистрации Таблица 6.2. Эта таблица не часть схемы конфигурации, но является информативной
таблицей регистрации. Это делает запись нового времени логина каждого
сервера memcached, используя конфигурацию. В случае реконфигурации онлайн signon_time делает запись времени последней
реконфигурации, а не времени запуска. Это непреднамеренное последствие и
могло бы считаться ошибкой. Предопределенные объекты конфигурации. Предопределенные кластеры. Единственная запись ndb_cluster
предопределена, относясь к основному кластеру (где данные конфигурации
сохранены) как cluster id 0. Id 0 должен всегда резервироваться
для основного кластера. Предопределенная политика кэша. "memcache-only": политика, в которой все операции по кэш-памяти
должны использовать только местный кэш. "ndb-only": политика, в которой все операции по кэш-памяти
должны использовать только NDB Cluster за исключением
FLUSH_ALL, которая отключена. "caching": get_policy, set_policy и delete_policy = "caching".
FLUSH_ALL отключена. "caching-with-local-deletes": get_policy и set_policy = "caching",
delete_policy = "cache-only", FLUSH_ALL отключена. "ndb-read-only": get_policy = ndb_only, чтобы операции GET с
кэш-памятью использовали базу данных, но все другие операции по
кэш-памяти отключены. "ndb-test": аналог "ndb-only", но FLUSH_ALL включена (flush_from_db =
true). Это единственная предопределенная политика с позволенной
flush_from_db. Эта политика позволена по умолчанию для роли сервера по
умолчанию, таким образом весь набор команд кэш-памяти
может быть продемонстрирован. Предопределенные контейнеры. "demo_table": контейнер использует таблицу
ndbmemcache.demo_table. "demo_tabs": контейнер использует таблицу
ndbmemcache.demo_table_tabs. Предопределенные роли сервера кэш-памяти и их ключевые префиксы. "default_role" (role id 0). "": пустой префикс (умолчание) использует политику ndb-test с
контейнером demo_table. "mc:" ключи кэш-памяти, начинающиеся с "mc:",
рассматриваются согласно политике кэша memcache-only. "t:" ключи кэш-памяти, начинающиеся с "t:",
используют политику кэша ndb-test с контейнером demo_tabs. "db-only" role (role id 1). "": пустой префикс (умолчание) использует роль ndb-only с
контейнером demo_table. Префикс "t:" использует роль ndb-only с контейнером demo_tabs. "mc-only" role (role id 2). "": пустой префикс (умолчание) использует только
местное кэширование для всех ключей. "ndb-caching" role (role id 3). "": пустой префикс (умолчание) использует политику кэша "caching"
с контейнером "demo_table" для всех ключей. Управление версиями конфигурации и модернизация.
Схема конфигурации версионная и номер версии сохранен в таблице
ndbmemcache.meta. NDB Engine начинает процесс конфигурации, читая номер
версии схемы из этой таблицы. Как правило, более новые версии NDB
останутся совместимыми с более старыми версиями схемы конфигурации.
Исполнительная настройка.
Два параметра используются, чтобы настроить работу
кэш-памяти NDB. Параметры сохранены в схеме конфигурации:
"usec_rtt" конкретного кластера и "max_tps" роли сервера кэш-памяти.
Эти значения в настоящее время используются двумя способами: чтобы
формировать количество связей с каждым кластером и формировать конкретное
постоянное число параллельных операций, поддержанных от каждой связи. Autotuning.
Автонастройка использует предполагаемое время цикла обработки между узлами
данных кластера и целевым уровнем пропускной способности, чтобы определить
идеальное количество связей кластера и транзакций для каждого подключения для
данной рабочей нагрузки. Автонастраивающиеся параметры описаны в
следующих нескольких параграфах. Эти значения используются, как описано в следующих нескольких параграфах,
чтобы вычислить оптимальное количество связей кластера с данной
способностью транзакций в секунду. Количество связей кластера. Планировщик NDB Engine
пытается открыть 1 связь кластера на 50000 транзакций в секунду (TPS).
Это поведение может быть отвергнуто при помощи строки конфигурации
планировщика (см. раздел 6.4
). Если планировщик не открывает вторую или последующую связь с кластером,
например, потому что id узла недоступен, это не фатальная ошибка,
это будет работать только с на самом деле открытыми связями. Количество транзакций для каждого подключения.
Мы предполагаем, что транзакция занимает в 5 раз больше цикла обработки
кластера. Мы можем получить общее количество транзакций в работе, деля
серверное Пример настройки. Следующий пример начинается со значений по
умолчанию 100000 TPS/50000 = 2, сервер открывает две связи кластера NDB.
Время транзакции в микросекундах = 250 мкс в 5 раз больше цикла
обработки = 250 мкс * 5 циклов = 1250 мкс. Транзакции для каждого подключения в секунду = 1000000/tx_time_in_sec
= 1000000/1250 = 800. Всего объектов Ndb = max_tps/tx_per_ndb_per_sec = 100000/800 = 125.
125 объектов Ndb/2 связи = 63 объекта Ndb на связь (округление вверх).
(Округление вверх еще раз), каждый из 4 рабочих потоков получает
по 32 объекта Ndb.
Реконфигурация онлайн.
Возможно повторно формировать отображения ключевого префикса управления
механизм NDB, не перезапуская его. Это сделано, передав изменение схемы
конфигурации, а затем обновив столбец
Реконфигурация онлайн может быть отключена при помощи опции
Реконфигурация онлайн может использоваться, чтобы соединиться с новыми
кластерми и создать новые отображения ключевого префикса. Однако это не может
использоваться, чтобы перезагрузить автонастраивающиеся значения
на существующих связях. Реконфигурация онлайн это опасная операция, которая может привести к
катастрофам сервера кэш-памяти или повреждению данных, и используется
экстенсивно в наборе тестов mysql. Однако это не рекомендуется для
переформирования рабочего сервера. Команда Механизм NDB поддерживает полный набор команд протокола кэш-памяти.
Когда недавно установленный сервер начат с роли сервера по умолчанию и схемы
конфигурации, необходимо быть в состоянии выполнить
memcapable, инструмент проверки
сервера кэш-памяти, и видеть, что все тесты проходят. После того, как
конфигурация была настроена, например, отключив команду FLUSH_ALL, некоторые
тесты memcapable, как
ожидают, потерпят неудачу. Операции GET, SET, ADD, REPLACE и DELETE.
Каждая из этих операций всегда выполняется согласно политике кэша, связанной
с префиксом ключа кэш-памяти. Это может воздействовать на в местном масштабе
кэшируемый элемент, пункт, сохраненный в базе данных или на обоих.
Если операция была отключена для префикса, разработчик, несомненно, должен
будет проверить отключенную операцию, так как это может потерпеть неудачу
тихо или с вводящим в заблуждение кодом ответа. CAS. CAS в протоколе кэш-памяти,
относится к значению compare and set,
которое используется в качестве своего рода номера версии кэшированного
значения и позволяет некоторое оптимистическое прикладное поведение. Если контейнер будет включать колонку CAS, ndb
произведет уникальный CAS ID каждый раз, когда это пишет значение данных,
и сохранит его в колонке CAS. Некоторые операции по кэш-памяти включают проверки CAS, такие как
ASCII-обновление CAS, у которого есть семантика
"обновляет эту значение только если ее id CAS
соответствует id CAS в запросе". Эти операции поддерживаются NDB.
Проверка сохраненного CAS ID против CAS ID приложения выполнена в атомной
операции на узле данных NDB. Это позволяет проверкам CAS работать правильно,
даже когда многократные серверы memcached получают доступ к той же самой
паре ключ/значение. Если проверки CAS ID используются, и дополнительные NDB Cluster API кроме
memcached, используются, чтобы управлять данными, то приложения, использующие
эти API отвечают за лишение законной силы сохраненных CAS ID каждый раз,
когда они обновляют данные. Они могут сделать это, установив сохраненное
CAS ID = 0 или CAS ID произведен, используя схему, которая пытается препятствовать тому,
чтобы различные серверы произвели накладывающиеся ID.
Эту схему можно считать максимальными усилиями, но не гарантией уникальности.
Схема строит начальный CAS следующим образом: Часть 32-битного Cluster GCI от основного кластера во время запуска
memcached используется для старших частей 64-битного CAS ID. Часть уникального id узла кластера в основном кластере используется,
когда полученная конфигурация используется для частей среднего порядка
бит CAS ID. Увеличивающийся счетчик в частях младшего разряда CAS ID по крайней
мере 28 бит шириной. В то время как механизм NDB производит одну последовательность CAS ID,
механизм по умолчанию, используемый для кэширования в местных
memcached-серверах, производит отличную последовательность. Не все комбинации
поведения CAS и политики кэша были проверены, таким образом, любой
разработчик приложений, желающий использовать CAS, должен полностью
проверить, ведет ли особая конфигурация себя как надо. FLUSH_ALL. FLUSH_ALL осуществляется следующим образом:
Сначала механизм NDB проходит по всем формируемым ключевым префиксам.
Для любого префикса, политика кэша которого позволяет сброс базы данных
( INCR и DECR. Все Операции Протокол ASCII memcached вводит некоторые двусмысленности в обработке
Режим Контейнер включает математическую колонку И Контейнер включает единственный столбец значений И Тип данных значений столбца нечисловой В режиме Каждый раз, когда ASCII-команды Каждый раз, когда ASCII-команды Каждый раз, когда выполняется команда
memcached APPEND и PREPEND. Операции memcache
STATS. Сервер может обеспечить много наборов статистики,
надо использовать Все статистические данные, обычно доступные от ядра memcached 1.6 и
механизма по умолчанию, доступны. Например,
Иначе эта команда возвращает статистическое сообщение
Каждый раз, когда Это также регистрирует свою попытку соединиться с основным кластером: При успешном получении начальных данных конфигурации механизм кэш-памяти
регистрирует итоговое сообщение, описывающее конфигурацию, подобную тому,
что показывают здесь: Механизм кэш-памяти также регистрирует учреждение каждой дополнительной
связи кластера, как показано здесь: Сообщение Как только механизм NDB закончил инициализацию, memcached печатает
сообщение, проверяющее, что механизм был загружен, и перечисляющее
некоторые его особенности: Если реконфигурация онлайн позволена, механизм NDB регистрирует каждую
реконфигурацию, наряду с резюме новой конфигурации, подобно тому,
что показывают здесь: На закрытии memcached регистрирует завершение, планировщик NDB
регистрирует свое собственное закрытие также: Эта секция предоставляет информацию об известных проблемах
и ограничениях Memcache API для кластера NDB. Проблемы с AUTO_INCREMENT.
ndbmemcache обходит
Чтобы решить проблему, можно использовать генератор
последовательности, как описано
здесь. Изменения схемы онлайн не поддержаны.
Демон memcached не
обнаруживает изменения схемы онлайн, после внесения таких изменений, его
необходимо перезапустить прежде, чем обновленная схема сможет использоваться.
Доли секунды.
Начиная с NDB 7.2.3, ndbmemcache поддерживает использование долей секунды с
типами данных
Глава 6. ndbmemcache: Memcache API
для NDB Cluster
6.1. Обзор
6.2. Компиляция NDB Cluster с поддержкой Memcache
bin
каталога установки NDB Cluster и
файл общего объекта ndb_engine.so
в подкаталог
lib
.-DWITH_BUNDLED_MEMCACHED=OFF
,
можно вместо этого использовать сервер memcached собственной системы и
источники, установленные в path
,
при помощи опций
-DWITH_BUNDLED_MEMCACHED=OFF
и
-DMEMCACHED_HOME=
. Можно также заставить использоваться
версию системы libevent, а не версию из NDB Cluster при помощи опции
path
-DWITH_BUNDLED_LIBEVENT=OFF
.
6.3. Опции командной строки
memcached
-E
so_file
-E
/path/to/ndb_engine.so
-e
"
configuration_string
"option=value
,
отделенные точками с запятой. Полная последовательность должна быть
процитирована, что предотвращает возможность, что оболочка могла бы
интерпретировать точку с запятой как сепаратор команды. Все варианты, которые
будут переданы NDB memcached, должны быть определены этим способом, как
показано следующим примером:
shell> memcached -E lib/ndb_engine.so -e "connectstring=maddy:1186;role=dev"
-t
number_of_worker_threads
-p
tcp_port
-U
udb_port
-h
6.4. Конфигурация механизма NDB
-e
(см. раздел
6.3):debug={true|false}
stderr
или в файл журнала memcached,
как показано в этом примере:
shell> memcached -E lib/ndb_engine.so -e "debug=true"
false
.connectstring=
connect_string
ndbmemcache
, как показано здесь:
shell > memcached -E lib/ndb_engine.so -e "connectstring=sam:1186;debug=true"
localhost:1186
.reconf={true|false}
ndbmemcache
).true
) по умолчанию.
role=
role_name
ndbmemcache
, определенной
role_name
в таблице
ndbmemcache.memcache_server_roles
.default_role
.
shell>
memcached -E lib/ndb_engine.so -e "role=db-only"
scheduler=
scheduler_name
:scheduler_options
scheduler_name
это
планировщик по умолчанию, но также есть
S-scheduler. Выбор S-scheduler принимает форму
одной буквы, сопровождаемой числом, многократные опции S-scheduler
отделены запятыми. В большинстве случаев, значение по умолчанию
S:c0,f0,t1
достаточно.c
: Количество связей с
NDB
.
Возможные значения находятся в диапазоне 0-4, 0 (умолчание) предписывает
вычислить это число автоматически. Используя 1, 2, 3 или 4, вы задаете
количество связей, которые будут созданы.f
: Может быть 0 или 1: 1 включает
принудительную передачу, по умолчанию 0 (принудительная передача выключена).
t
: Устанавливает таймер потока передачи в
1-10 миллисекунд (включительно). По умолчанию 1.ndbmemcache
.
Имя таблицы
Описание
meta
Таблица метаданных описывает номер версии ndbmemcache.
Это нужно рассмотреть как только для чтения. ndb_clusters
cache_policies
policy_name
используется в качестве
ключа (нет никакого числового стратегического id).containers
memcache_server_roles
memcache_server_roles
отображает ролевое имя к числовому ID и задает спецификатор
max_tps
, который используется для исполнительной
настройки. Посмотрите
Autotuning. Рекомендуется использовать значение по умолчанию.key_prefixes
get_policy
,
set_policy
,
delete_policy
и
flush_from_db
.get_policy
определяет, как сервер
интерпретирует команды GET
.
Возможные значения показывают в следующем списке:cache_only
:
Сервер ищет только в его местном кэше.ndb_only
:
Сервер ищет только в базе данных NDB.caching
: Сервер смотрит местный кэш
сначала, затем базу данных NDB Cluster.disabled
:
Команда GET
выключена.set_policy
определяет, как сервер
интерпретирует команды SET
,
INSERT
и REPLACE
.cache_only
:
Сервер обновляет значение только в своем местном кэше.ndb_only
:
Сервер обновляет значение только в NDB Cluster.caching
: Сервер обновляет значение в
NDB Cluster, затем сохранит копию в местном кэше.disabled
:
Команды SET
,
INSERT
и
REPLACE
выключены.delete_policy
определяет, как сервер
интерпретирует команду DELETE
:cache_only
:
Сервер удаляет значение только из своего местного кэша.ndb_only
:
Сервер удаляет значение только из базы данных NDB Cluster.caching
:
Сервер удаляет значение из базы данных и из местного кэша.disabled
:
Операции DELETE
выключены.flush_from_db
определяет, как сервер
интерпретирует команды FLUSH_ALL
относительно данных, хранящихся в базе данных NDB Cluster:true
:
FLUSH_ALL
удаляют данные из базы
данных NDB Cluster.false
:
FLUSH_ALL
не затрагивают базу
данных NDB Cluster.containers
описаны в следующем списке:name
:
Название контейнера; первичный ключ таблицы.db_schema
:
Название базы данных (схемы), содержащей контейнерные таблицы.db_table
: имя контейнерной таблицы.
key_columns
:
Список колонок, которые отображены к ключу кэш-памяти. Большинство ключей это
ключи с одной частью, но у ключа может быть до четырех частей, в этом случае
многочисленные колонки перечислены и отделены запятыми.value_columns
:
Список колонок, которые отображены к значениям кэш-памяти. Это может также
содержать список разделенных запятой значений до 16 столбцов.flags
: В настоящее время не работает,
это предназначается для хранения числового значения, которое используется в
качестве параметра FLAGS
кэш-памяти для всего
контейнера или названия той колонки контейнерной таблицы, которая раньше
хранила это значение.increment_column
:
Название колонки в контейнерной таблице, которая хранит числовое значение,
используемое в операциях memcached
INCR
и DECR
.
Если установлено, это должно быть BIGINT UNSIGNED
.cas_column
Название колонки в контейнерной таблице, которая хранит значение CAS
кэш-памяти. Если установлено, это должен быть
BIGINT UNSIGNED
.expire_time_column
: Пока не сделано.
ndbmemcache
и всех контейнерных таблиц.
Имя таблицы
Описание
last_memcached_signon
ndb_node_id
интервал записи id узла API сервера.hostname
имя хоста сервера.server_role
роль, назначенная на сервер во время входа в систему.signon_time
метка времени, делающая
запись времени запуска memcached.demo_table
demo_table контейнерная таблица, используемая с префиксом ключа по
умолчанию в роли сервера по умолчанию. Это используется, чтобы
продемонстрировать операции SET и GET, а также INCR, DECR и CAS с одним
столбцом ключа и одним столбцом значений. demo_table_tabs
demo_table_tabs контейнерная таблица контейнера "demo_tabs",
который используется с ключевым префиксом "t:" в роли сервера по умолчанию.
Это используется, чтобы продемонстрировать один столбец ключа с многократными
столбцами значений. В операциях по кэш-памяти столбцы значений представляются
как отделенный табуляциями список.
usec_rtt
:
Время цикла обработки в микросекундах между узлами кластера.
Значение по умолчанию 250, которое типично для кластера NDB на местном
ethernet. Чтобы представлять кластер с более высоким временем ожидания
между узлами более высокое значение должно использоваться.max_tps
:
Желаемая пропускная способность от сервера. Эта значение эвристическое, и ни
в коем случае не выражает минимум или максимум на фактически полученной
пропускной способности. Значение по умолчанию (100000)
разумно в большинстве случаев.max_tps
на
5 * rtt
(в секундах). Эти операционные объекты
равномерно распределяются среди связей кластера.usec_rtt
= 250 и
max_tps
= 100000
и принимает сервер memcached с 4 рабочими потоками.update_timestamp
конкретной роли сервера
в ролевой таблице сервера кэш-памяти. Обновление метки времени заставляет
триггер событий сработать, чтобы сервер кэш-памяти
получил уведомление о событии.-e reconf=false
в командной строке.stats reconf
может быть вызвана
прежде и после реконфигурации онлайн, чтобы проверить, что номер версии
конфигурации увеличился. Проверка реконфигурации также написана в
файл журнала memcached.
6.5. Команды протокола Memcache
NULL
.flush_from_db
=
true
), это выполняет просмотр каждой удаленной
строки в контейнерной таблицы того префикса. Другие префиксы проигнорированы.
Это может быть медленной операцией, если таблица большая, некоторые клиенты
кэш-памяти могут получить тайм-аут перед завершением
DELETE
. После того, как вся база данных
обработана, команда FLUSH_ALL
отправлена
стандартному механизму кэширования, который устанавливает флаг, лишающий
законной силы все кэшированные данные.INCR
и
DECR
переданы к узлам данных NDB и выполнены
атомарно там. Это позволяет многократным серверам увеличивать или уменьшать
тот же самый ключ и гарантировать уникальное значение каждый раз.INCR
и
DECR
имеют более ясную и более полезную
семантику в двоичном протоколе кэш-памяти, чем в протоколе ASCII.
Протокол двоичной синхронной передачи данных рекомендуется.INCR
и DECR
и вынуждает механизм NDB работать в режиме
dup_numbers
, в котором
value_column
и
math_column
должны отразить друг друга.dup_numbers
позволен для ключевых
префиксов, которые отвечают всем следующим условиям:dup_numbers
следующее специальное поведение применяется:SET
,
ADD
или REPLACE
устанавливают значение, которое могло интерпретироваться как числовое, и
контейнер определяет math_column, текстовое значение сохранено в столбце
значений, а числовое значение также сохранено в математической колонке.
INCR
или
DECR
выполняются, текстовое значение столбца
значений контейнера установлено в NULL
.GET
и столбец значений контейнера
NULL
, но математическая колонка контейнера не
NULL
, математическое
значение возвращено клиенту.APPEND
и PREPEND
осуществляются как единственная транзакция, которая включает чтение
существующего значения с монопольной блокировкой, сопровождаемое записью
нового значения. Чтение и запись сгруппированы атомарно в транзакцию, но в
отличие от INCR
и
DECR
, которые могут работать на узлах данных,
APPEND
и PREPEND
выполняются в memcached-сервере. Это означает, что многократные
memcached-серверы могут передать APPEND
и
PREPEND
то же самое значение, и что никакие
обновления не будут потеряны, но это утверждение полагается на поведение при
блокировании, которое могло вызвать увеличенное время ожидания.STATS
из оболочки логина.KEYWORD
STATS
, STATS SLABS
и STATS SETTINGS
в настоящее время
поддерживаются, как описано в документации memcached.
Некоторые специальные наборы статистики доступны из
NDB
, используя команды
STATS
в следующем списке:STATS NDB
: Вернет статистику NDB API
для каждой связи кластера NDB. Это те же самые внутренние статистические
данные, которые доступны как переменные состояния системы от MySQL Server.
См. NDB API Statistics Counters and Variables.STATS SCHEDULER
:
Статистика для планировщика S. Обо всех этих статистических данных сообщают
на уровне связи кластера.cl%d.conn%d.sent_operations
:
Количество операций, посланных из передающего потока связи в
узлы данных кластера.cl%d.conn%d.batches
:
Количество операционных блоков, посланных от передающего потока связи в
узлы данных. Каждый блок содержит одну или более операций.
sent_operations
/
batches
может использоваться, чтобы вычислить
средний пакетный размер.cl%d.conn%d.timeout_races
:
Это делает запись редкого состояния состязания, которое может произойти в
передающем потоке. Это, как ожидают, будет 0 или будет очень низким по
сравнению с sent_operations.stats reconf
:
Если NDB
в настоящее время загружает новую
конфигурацию, команда возвращает однострочное сообщение
Loading
, где revno
revno
номер версии загружаемой конфигурации.Running
.revno
revno
начинается с 1, когда
сервер memcached начинает работать и увеличено на 1 для
каждой реконфигурации онлайн.6.6. Файл журнала memcached
NDB
инициализируется, он пишет сообщение включая метку времени и номер версии к
его файлу журнала, как показано здесь:
12-Oct-2011 13:40:00 PDT NDB Memcache 5.5.15-ndb-7.2.1 started
[NDB 7.2.1; MySQL 5.5.15]
Contacting primary management server (localhost:1186) ...
Connected to "localhost:1186" as node id 4.
Retrieved 3 key prefixes for server role "default_role"
The default behavior is that:
GET uses NDB only
SET uses NDB only
DELETE uses NDB only
The 2 explicitly defined key prefixes are "mc:" () and "t:" (demo_table_tabs)
Server started with 4 threads.
Connected to "" as node id 5.
priming the pump...
указывает, что механизм собирается предварительно наполнить пул
операционных объектов (API Connect Records). Это сопровождается сообщением
done ...
, указывающим, сколько времени это
заняло. Сервер не готов ответить клиентам, пока предварительная установка
не будет закончена.
Priming the pump ...
Scheduler: using 2 connections to cluster 0
Scheduler: starting for 1 cluster; c0,f0,t1
done [0.579 sec].
Loaded engine: NDB Memcache 5.5.15-ndb-7.2.1
Supplying the following features: compare and swap, persistent storage, LRU
Received update to server role default_role
Retrieved 3 key prefixes for server role "default_role".
The default behavior is that:
GET uses NDB only
SET uses NDB only
DELETE uses NDB only.
The 2 explicitly defined key prefixes are "mc:" () and "t:" (demo_table_tabs)
ONLINE RECONFIGURATION COMPLETE
Initiating shutdown
Shutting down scheduler.
Shutdown completed.
6.7. Известные проблемы и ограничения ndbmemcache
NDB
для обработки столбцов
AUTO_INCREMENT
. Это означает что, когда вы
вставляете строки, используя ndbmemcache в таблицу, имеющую столбец
AUTO_INCREMENT
, он автоматически не обновляется.
Это может привести к ошибкам двойного ключа, когда вставки выполняются
позднее с использованием SQL в клиентском приложении MySQL, таком как
mysql.TIME
,
DATE
и
DATETIME
как осуществлено в
MySQL 5.6.4 и позже. ndbmemcache в предыдущих версиях кластера NDB не
поддерживает доли секунды (Bug #16593493).
Найди своих коллег! |
Вы можете направить письмо администратору этой странички, Алексею Паутову.