Spec-Zone .ru
спецификации, руководства, описания, API
|
Минимизировать дисковый ввод-вывод, MyISAM
механизм хранения использует стратегию,
которая используется многими системами управления базами данных. Это использует механизм кэша, чтобы сохранить
табличные блоки, к которым наиболее часто получают доступ, в памяти:
Для индексируют блоки, специальная структура, названная ключевым кэшем (или ключевым буфером), сохраняется. Структура содержит много буферов блоков, где наиболее используемые индексируют блоки, помещаются.
Для блоков данных MySQL не использует специального кэша. Вместо этого это полагается на собственный кэш файловой системы операционной системы.
Этот раздел сначала описывает основную работу MyISAM
ключевой кэш. Затем это
обсуждает функции, которые улучшают ключевую производительность кэша и которые позволяют Вам лучше управлять
работой кэша:
Многократные сеансы могут получить доступ к кэшу одновременно.
Можно установить многократные ключевые кэши и присвоиться, таблица индексирует к определенным кэшам.
Чтобы управлять размером ключевого кэша, используйте key_buffer_size
системная переменная. Если эта переменная устанавливается равная
нулю, никакой ключевой кэш не используется. Ключевой кэш также не используется если key_buffer_size
значение является слишком маленьким, чтобы выделить
минимальное число буферов блоков (8).
Когда ключевой кэш не является операционным, к индексным файлам получают доступ, используя только собственную буферизацию файловой системы, обеспеченную операционной системой. (Другими словами, таблица индексируют блоки, получаются доступ, используя ту же самую стратегию, как это использовало для табличных блоков данных.)
Индексировать блок является непрерывным модулем доступа к MyISAM
индексные файлы.
Обычно размер индексировать блока равен размеру узлов индексировать B-дерева. (Индексирует, представляются на
диске, используя структуру данных B-дерева. Узлы у основания дерева являются вершинами. Узлы выше вершин
являются узлами, не являющимися листом.)
Все буферы блоков в ключевой структуре кэша являются тем же самым размером. Этот размер может быть равным, больше чем, или меньше, чем размер таблицы индексирует блок. Обычно эти два значения являются кратным числом другого.
К тому, когда данные от любой таблицы индексируют блок, нужно получить доступ, сервер сначала проверяет, доступно ли это в некотором буфере блоков ключевого кэша. Если это, данные доступов сервера в ключевом кэше, а не на диске. Таким образом, это читает из кэша или записей в это вместо того, чтобы читать из или записать в диск. Иначе, сервер выбирает, буфер блока данных кэша, содержащий различную таблицу, индексируют блок (или блоки), и заменяет данные там копией необходимой таблицы, индексируют блок. Как только новые индексируют блок, находится в кэше, к индексировать данным можно получить доступ.
Если это происходит, что блок, выбранный для замены, был изменен, блок считают "грязным". В этом случае, до того, чтобы быть замененным, его содержание сбрасывается к таблице, индексируют, из которого она прибыла.
Обычно сервер следует за LRU (Последняя использованная) стратегия: выбирая блок для замены, это выбирает последнее использованное, индексируют блок. Чтобы сделать этот легче выбор, ключевой модуль кэша поддерживает все используемые блоки в специальном списке (цепочка LRU) упорядоченный временем использования. Когда к блоку получают доступ, это последний раз используется и помещается в конце списка. Когда блоки должны быть заменены, блоки в начале списка являются последним использованным и становятся первыми кандидатами на замещение.
InnoDB
механизм хранения также использует алгоритм LRU, чтобы управлять его пулом
буферов. См. Раздел
8.9.1," InnoDB
Пул буферов".