Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 В какой момент обновляется кластерный индекс?  [new]
Терегулов Артур
Member

Откуда:
Сообщений: 3
Он обновляется сразу при записи или это может быть какая-то фоновая задача? И где про это можно почитать?

Если база несколько гигов и каждую минуту будет запись блока данных в середину, он каждый раз двигать все данные на диске будет?
3 июн 13, 11:54    [14382853]     Ответить | Цитировать Сообщить модератору
 Re: В какой момент обновляется кластерный индекс?  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
Терегулов Артур
Он обновляется сразу при записи или это может быть какая-то фоновая задача? И где про это можно почитать?

Если база несколько гигов и каждую минуту будет запись блока данных в середину, он каждый раз двигать все данные на диске будет?

Напишите простейший запрос (insert) например и посмотрите план.

у вас будет Clustered Index Insert (%).

Другой вопрос обслуживания индекса.
3 июн 13, 11:57    [14382882]     Ответить | Цитировать Сообщить модератору
 Re: В какой момент обновляется кластерный индекс?  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
Терегулов Артур,

http://msdn.microsoft.com/ru-ru/library/ms189271(v=sql.105).aspx - Здесь достаточно много теоретической информации об индексах, для общего понимания вполне хватит.
3 июн 13, 12:04    [14382936]     Ответить | Цитировать Сообщить модератору
 Re: В какой момент обновляется кластерный индекс?  [new]
Терегулов Артур
Member

Откуда:
Сообщений: 3
за ссылку спасибо, а чтение планов еще не освоил
3 июн 13, 12:18    [14383056]     Ответить | Цитировать Сообщить модератору
 Re: В какой момент обновляется кластерный индекс?  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Терегулов Артур
Он обновляется сразу при записи или это может быть какая-то фоновая задача? И где про это можно почитать?

Если база несколько гигов и каждую минуту будет запись блока данных в середину, он каждый раз двигать все данные на диске будет?
Тут планы не причём.
Тут многое надо понимать. У базы 2 типа файлов:
1. Логи
2. Данные

Логи это все операции над данными. Самая ценные и первичные файлы.
Остальное это кеширование текущено состояния данных. Кеширование и индексы это оптимизации работы с данными.
На диски данные фалов данных сбрасывается периодически, а не сразу, а логи постоянно.
В логах нет индексов. А актуальные данные индексов (и данных) есть только в памяти.
Для целостности данных оно не актуально - всё можно восстановить из логов. И так и делается постоянно. Когда даже просто подымается сервер.

В середину будет вставлять, постоянно. Но не сбрасывается на диск каждый раз. Но ещё есть такая оптимизация, как неполнота страниц. Если вставить в середине некуда, то страница делится пополам на две, и теперь в этой серединке уже много дырок для вставки (в двух наполовину незаполненных страницах).
3 июн 13, 14:02    [14383833]     Ответить | Цитировать Сообщить модератору
 Re: В какой момент обновляется кластерный индекс?  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
И другая "оптимизация". Данные в файле располагаются не последовательно. Данные таблицы может быть разбросано в файлах данных в разных местах. Последовательность определена списочной связанностью страниц данных. Страница это просто структурно монолитный кусок в 4 килобайта.
3 июн 13, 14:06    [14383856]     Ответить | Цитировать Сообщить модератору
 Re: В какой момент обновляется кластерный индекс?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37139
Mnior
Страница это просто структурно монолитный кусок в 4 килобайта.
8 Кб же.
3 июн 13, 14:09    [14383864]     Ответить | Цитировать Сообщить модератору
 Re: В какой момент обновляется кластерный индекс?  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Mnior
И другая "оптимизация". Данные в файле располагаются не последовательно. Данные таблицы может быть разбросано в файлах данных в разных местах. Последовательность определена списочной связанностью страниц данных. Страница это просто структурно монолитный кусок в 8 килобайт.
Я так понимаю, что ТС где то прочитал распространенное заблуждение, про физическую упорядоченность данных в кластерном индексе. Отсюда и идея про "двигать гигабайты данных на диске".

Разницы нет, какого размера у вас база, потому что двигаться (и то не всегда) будут только измененные данные, ну и при этом естественно расти фрагментация.
3 июн 13, 21:08    [14386216]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить