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

8.9.2. MyISAM Ключевой Кэш

8.9.2.1. Совместно используемый Ключевой Доступ Кэша
8.9.2.2. Многократные Ключевые Кэши
8.9.2.3. Стратегия Вставки средней точки
8.9.2.4. Индексируйте Предварительно загружение
8.9.2.5. Ключевой Размер Блока данных кэша
8.9.2.6. Реструктурирование Ключевого Кэша

Минимизировать дисковый ввод-вывод, MyISAM механизм хранения использует стратегию, которая используется многими системами управления базами данных. Это использует механизм кэша, чтобы сохранить табличные блоки, к которым наиболее часто получают доступ, в памяти:

Этот раздел сначала описывает основную работу MyISAM ключевой кэш. Затем это обсуждает функции, которые улучшают ключевую производительность кэша и которые позволяют Вам лучше управлять работой кэша:

Чтобы управлять размером ключевого кэша, используйте key_buffer_size системная переменная. Если эта переменная устанавливается равная нулю, никакой ключевой кэш не используется. Ключевой кэш также не используется если key_buffer_size значение является слишком маленьким, чтобы выделить минимальное число буферов блоков (8).

Когда ключевой кэш не является операционным, к индексным файлам получают доступ, используя только собственную буферизацию файловой системы, обеспеченную операционной системой. (Другими словами, таблица индексируют блоки, получаются доступ, используя ту же самую стратегию, как это использовало для табличных блоков данных.)

Индексировать блок является непрерывным модулем доступа к MyISAM индексные файлы. Обычно размер индексировать блока равен размеру узлов индексировать B-дерева. (Индексирует, представляются на диске, используя структуру данных B-дерева. Узлы у основания дерева являются вершинами. Узлы выше вершин являются узлами, не являющимися листом.)

Все буферы блоков в ключевой структуре кэша являются тем же самым размером. Этот размер может быть равным, больше чем, или меньше, чем размер таблицы индексирует блок. Обычно эти два значения являются кратным числом другого.

К тому, когда данные от любой таблицы индексируют блок, нужно получить доступ, сервер сначала проверяет, доступно ли это в некотором буфере блоков ключевого кэша. Если это, данные доступов сервера в ключевом кэше, а не на диске. Таким образом, это читает из кэша или записей в это вместо того, чтобы читать из или записать в диск. Иначе, сервер выбирает, буфер блока данных кэша, содержащий различную таблицу, индексируют блок (или блоки), и заменяет данные там копией необходимой таблицы, индексируют блок. Как только новые индексируют блок, находится в кэше, к индексировать данным можно получить доступ.

Если это происходит, что блок, выбранный для замены, был изменен, блок считают "грязным". В этом случае, до того, чтобы быть замененным, его содержание сбрасывается к таблице, индексируют, из которого она прибыла.

Обычно сервер следует за LRU (Последняя использованная) стратегия: выбирая блок для замены, это выбирает последнее использованное, индексируют блок. Чтобы сделать этот легче выбор, ключевой модуль кэша поддерживает все используемые блоки в специальном списке (цепочка LRU) упорядоченный временем использования. Когда к блоку получают доступ, это последний раз используется и помещается в конце списка. Когда блоки должны быть заменены, блоки в начале списка являются последним использованным и становятся первыми кандидатами на замещение.

InnoDB механизм хранения также использует алгоритм LRU, чтобы управлять его пулом буферов. См. Раздел 8.9.1," InnoDB Пул буферов".