Здавалка
Главная | Обратная связь

Управління роботою з екстентами і вільним місцем



Структури даних SQL Server, що керують використанням екстенту і відслідковуванням вільного місця, мають відносно просту структуру. Відомості про вільне місце щільно упаковані, тому ці дані містять відносно невелику кількість сторінок. Це призводить до збільшення швидкості із-за зменшення необхідних операцій читання диску для здобуття відомостей про розміщення. Також збільшується вірогідність того, що сторінки розміщення залишатимуться в пам'яті і повторної операції читання не буде потрібно. Велика частина відомостей про розміщення не зв'язана по ланцюжку одна з одною. Це спрощує управління відомостями про розміщення. Кожна дія з розміщення або звільнення сторінки може виконуватися швидко. Це скорочує конфлікти між одночасними завданнями використання і звільнення сторінок.

SQL Server використовує два типи карт для запису відомостей про використання екстентів:

· Глобальна карта розподілу (GAM)

На GAM-сторінках записано, які екстенти були задіяні. У кожній карті GAM містяться відомості про використання 64 000 екстентів або про розміщення майже 4 Гб даних. У карті GAM доводиться по одному біту на кожен екстент в інтервалі, що покривається цим екстентом. Якщо біт дорівнює 1, то екстент вільний; якщо біт дорівнює 0, то екстент задіяний.

· Загальна глобальна карта розподілу (SGAM)

На SGAM-сторінках записано, які екстенти в поточний момент використовуються в ролі змішаних екстентів і мають як мінімум одну невживану (незадіяну) сторінку. У кожній карті SGAM містяться відомості про використання 64 000 екстентів або про розміщення майже 4 Гб даних. У карті SGAM доводиться по одному біту на кожен екстент в інтервалі, що покривається цим екстентом. Якщо біт дорівнює 1, то екстент використовується як змішаний екстент і має вільну сторінку. Якщо біт дорівнює 0, то екстент не використовується як змішаний екстент, або він є змішаним екстентом, але всі його сторінки використовуються.

Це дає прості алгоритми управління екстентами сторінок. Для використання для зберігання об'єкту однорідного екстенту компонент СУБД Database Engine проводить на карті GAM пошук біта 1 і замінює його на біт 0. Для пошуку змішаного екстенту з вільними сторінками компонент Database Engine проводить пошук на карті SGAM біта 1. Для розміщення змішаного екстенту компонент Database Engine проводить на карті GAM пошук біта 1 і замінює його на біт 0, а потім встановлює значення відповідного біта на карті SGAM рівним 1. Для звільнення екстенту компонент Database Engine встановлює біт GAM рівним 1, а відповідний біт SGAM рівним 0. Внутрішні алгоритми, які насправді використовуються компонентом Database Engine, складніші, ніж ми описуємо в цій лекції, оскільки компонент Database Engine розповсюджує дані в базі даних рівномірно. Проте навіть ці алгоритми спрощуються через те, що відпадає необхідність управління ланцюжками відомостей про розміщення екстентів.







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.