Влияние размера страниц на эффективность буферного кэша

Оценить
(0 голоса)

Выбор размера страницы (или размера блока) БД оказывает важное влияние на ее производительность. Для приложений DSS обычно выбирают размеры страниц побольше, поскольку они снижают издержки при последовательной обработке больших томов данных. Для баз данных OLTP обычно выбирают размеры страниц поменьше, поскольку обращение к операциям ввода/вывода чаще всего будет произвольным, а размеры строк - сравнительно небольшими.

Одной из основных причин влияния размера страницы базы Данных на производительность является его воздействие на эффективность буферного кэша БД. Размер страницы определяет как размер страниц в буферном кэше, так и размер блоков ввода/вывода из/в таблицы базы данных на диске.

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

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

В противоположность этому, в странице размером 32 Кбайт может быть размещено вплоть до 64 строк размером 500 байт каждая. Если локальность доступа высокая, а большинство строк или все остальные 63 строки могут быть использованы в одно время, будет сэкономлено множество операций ввода/вывода.

Тем не менее, большие страницы не являются хорошим выбором, когда доступ к данным оказывается произвольным и локальность доступа низкая. Например, для страниц размером в 32 Кбайт при каждом чтении или записи должен быть выполнен ввод/вывод через блоки в 32 Кбайт. Еще хуже дело обстоит с буферным кэшем объемом 2 Гбайт, когда доступно только 65536 буферов размером 32 Кбайт или 1048576 буферов со страницами в 2 Кбайт. Таким образом, кэшированными могут быть не все страницы, а значит из большого количества строк, приносимых с каждой страницей, можно получить незначительное преимущество.

Очень большие буферные кэши 64-разрядных баз данных воплощают другие идеи. Например, буферный кэш в 32 Гбайт будет поддерживать 16777216 страниц размером 2 Кбайт и 1048576 страниц размером 32 Кбайт. Издержки, связанные с управлением буферным кэшем, возрастают при увеличении количества страниц. Соответственно, точка, вероятнее всего, будет достигнута за пределом, более эффективным при нескольких больших страницах.

В завершение можно сказать об использовании страниц небольших размеров (от 2 до 8 Кбайт) в приложениях OLTP для получения максимальной эффективности кэша при произвольном доступе к данным. Использование страниц больших размеров для приложений DSS сокращает их количество при доступе к большим таблицам.

Дисковый ввод/вывод является центральной операцией РСУБД
Обзор буферного кэша
Мониторинг буферного кэша
Руководство по частоте успешных обращений к буферному кэшу
Рабочий пример

Добавить комментарий


Защитный код
Обновить