14.21.5.2 Адаптация приложения memcached для плагина InnoDB memcached
Рассмотрите эти аспекты MySQL и InnoDB таблиц при адаптации существующих приложений memcached для использования плагина daemon_memcached:
Если значения ключей имеют длину более нескольких байт, может быть эффективнее использовать числовой столбец с автоматическим увеличением (auto-increment) в качестве
InnoDBтаблицы и создать уникальный индекс на столбце, содержащем значения ключей memcached. Это связано с тем, чтоInnoDBработает лучше при масштабных вставках, если значения первичного ключа добавляются в отсортированном порядке (как это происходит при использовании автоинкремента). Значения первичного ключа включены во вторичные индексы, что приводит к ненужному увеличению размера, если значение первичного ключа – длинная строка.Если вы храните несколько различных типов данных с помощью memcached, рассмотрите возможность создания отдельной
InnoDBтаблицы для каждого типа данных. Определите дополнительные идентификаторы таблиц вinnodb_memcache.containersтаблице и используйте@@нотацию для хранения и извлечения элементов из разных таблиц. Физическое разделение различных типов данных позволяет настроить характеристики каждой таблицы для оптимального использования места, производительности и надёжности. Например, вы можете включить для таблицы, содержащей посты блога, но не для таблицы, содержащей миниатюры изображений. Вы можете архивировать одну таблицу чаще, чем другую, поскольку она содержит критически важные данные. Вы можете создать дополнительные индексы на таблицах, которые часто используются для генерации отчетов с помощью SQL.table_id.keyВ идеале настройте устойчивый набор определений таблиц для использования с плагином daemon_memcached и оставьте таблицы неизменными. Изменения в
innodb_memcache.containersтаблице вступают в силу при следующем запросе кinnodb_memcache.containersтаблице. Записи в таблице контейнеров обрабатываются при запуске и используются всякий раз, когда запрашивается нераспознанный идентификатор таблицы (как определённыйcontainers.name) с использованием@@нотации. Таким образом, новые записи видны сразу же после использования соответствующего идентификатора таблицы, но изменения в существующих записях требуют перезапуска сервера, прежде чем они вступят в силу.Когда вы используете политику кэширования по умолчанию
innodb_only, вызовыadd(),set(),incr()и т. д. могут быть успешными, но всё же вызывать сообщения об отладке, такие какwhile expecting 'STORED', got unexpected response 'NOT_STORED. Сообщения об отладке возникают, потому что новые и обновленные значения отправляются непосредственно вInnoDBтаблицу без сохранения в кэше памяти из-за политики кэшированияinnodb_only.
© 2025 Oracle
Licensed under the GPLv2 License.