Spec-Zone.ru › MySQL 5.7

14.21.5.2 Адаптация приложения memcached для плагина InnoDB memcached

Рассмотрите эти аспекты MySQL и InnoDB таблиц при адаптации существующих приложений memcached для использования плагина daemon_memcached:

  • Если значения ключей имеют длину более нескольких байт, может быть эффективнее использовать числовой столбец с автоматическим увеличением (auto-increment) в качестве InnoDB таблицы и создать уникальный индекс на столбце, содержащем значения ключей memcached. Это связано с тем, что InnoDB работает лучше при масштабных вставках, если значения первичного ключа добавляются в отсортированном порядке (как это происходит при использовании автоинкремента). Значения первичного ключа включены во вторичные индексы, что приводит к ненужному увеличению размера, если значение первичного ключа – длинная строка.

  • Если вы храните несколько различных типов данных с помощью memcached, рассмотрите возможность создания отдельной InnoDB таблицы для каждого типа данных. Определите дополнительные идентификаторы таблиц в innodb_memcache.containers таблице и используйте @@table_id.key нотацию для хранения и извлечения элементов из разных таблиц. Физическое разделение различных типов данных позволяет настроить характеристики каждой таблицы для оптимального использования места, производительности и надёжности. Например, вы можете включить для таблицы, содержащей посты блога, но не для таблицы, содержащей миниатюры изображений. Вы можете архивировать одну таблицу чаще, чем другую, поскольку она содержит критически важные данные. Вы можете создать дополнительные индексы на таблицах, которые часто используются для генерации отчетов с помощью SQL.

  • В идеале настройте устойчивый набор определений таблиц для использования с плагином 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.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/innodb-memcached-porting-memcached.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API