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

Откуда: from the middle of nowhere
Сообщений: 3598
Блог
Ken Henderson, Guru's Guide To T-SQL:
A table without a clustered index is known as a heap table. Rows inserted into a heap table are
inserted wherever there’s room in the table. If there’s no room on any of the table’s existing
pages, a new page is created and the rows are inserted onto it. This can create a hotspot at the
end of the table (meaning that users attempting simultaneous INSERTs on the table will vie for
the same resources). To alleviate the possibility of this happening, you should always establish
clustered indexes for the tables you build. Consider using a unique key that distributes new
rows evenly across the table. Avoid automatic, sequential, clustered index keys as they can
cause hotspots, too.

Это как понимать? Или это только к 7-ке относится?
21 июл 04, 15:18    [824419]     Ответить | Цитировать Сообщить модератору
 Re: Кластерные и некластерные индексы  [new]
Ray D
Member

Откуда: from the middle of nowhere
Сообщений: 3598
Блог
Ни у кого никаких идей?
Это так и есть?
22 июл 04, 09:52    [826335]     Ответить | Цитировать Сообщить модератору
 Re: Кластерные и некластерные индексы  [new]
andsm
Member

Откуда: Москва
Сообщений: 1319
Блог
Предотвращать появление 'горячей точки' в базе данных имеет смысл только при большом количестве инсертов в секунду, в другом случае можно об этом не думать.
Есть еще и блокировки компиляции, можно и на них получить торможение/горячую точку, на ОЧЕНЬ нагруженных системах. Нужно ли при создании любой БД заранее боротться с ними? Я считаю что оптимизация нужна только в том случае если видна необходимость.
22 июл 04, 10:09    [826402]     Ответить | Цитировать Сообщить модератору
 Re: Кластерные и некластерные индексы  [new]
Sargos
Member

Откуда: Саратов
Сообщений: 563
Я так понял, что Ken предлягает избегать использовать кластерный индекс для автоинткементных полей и типа того, мотивируя это тем, что в случае массовых insertов в такую таблицу все они попадут в последнюю страницу, что приведет к неравномерному использованию ресурсов.
Однако не вижу в этом глобального недостатка, чтобы безусловно "избегать".

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

Все это конечно ИМХО и никого не обязывает быть согласным..
22 июл 04, 10:51    [826589]     Ответить | Цитировать Сообщить модератору
 Re: Кластерные и некластерные индексы  [new]
x
Guest
Может и понизит температуру горячей точки в конце таблицы.
Но! Ценой повышения температуры дисковой подсистемы.
Страниц-то будет обновляться=записываться больше.
22 июл 04, 10:51    [826593]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить