Разреженный кластерный индекс, как средство повывашающее производительность вставки.

--__Александр__--
Дата: 23.02.2010 22:02:29
В одной из книжек советуются для таблиц, в которых осуществляется активная вставка - создавать уникальный кластерный индекс таким образом, что бы он распределял новые данные равномерно по таблице.
При вставке в "кучу", возможно появление "горячей точки" в конце таблицы, что приводит к ухудшение производительности команды INSERT.
По этой же причине не рекомендуется создавать кластерный индекс по монотонно увеличивающимся ключам.
Кто-нибудь использует такой подход для повышения производительности вставки?
Если нет, что думаете об этом? Стоит тратить время на эксперимент?


-----------------
open your mind
ScareCrow
Дата: 23.02.2010 23:36:52
про то что fillfactor увеличивает скорость вставки, на замедляет скорость выборки даже ежу уже понятно.
--__Александр__--
Дата: 24.02.2010 07:21:59
ScareCrow

Я где-то писал про филлфактор? Автор утверждает, что в таблицу с кластерным индексом скажем по полю uniqueindentifier будет вставляться быстрее, нежели вообще в таблицу без индексов.
Идет сравнение куча VS кластерный индекс по неупорядочному полю(например по uniqueindentifier)
Читайте внимательнее вопрос и не надо ничего додумывать.

У вас есть что сказать по сути вопроса?

-----------------
open your mind
Crimean
Дата: 24.02.2010 09:57:12
> Стоит тратить время на эксперимент?

однозначно стоит
--__Александр__--
Дата: 24.02.2010 10:04:37
Crimean
У вас есть опыт применения подобной техники?

Эксперимент поставить всегда успею. Сначала хотелось бы выслушать теоретическую часть )) .

-----------------
open your mind
Crimean
Дата: 24.02.2010 10:08:13
а мы не пользуемся "кучами" из-за неуправляемой фрагментации таблиц. так что именно мне вопрос "мимо". но по опыту, все теоретические выкладки в конкретных практических условиях очень часто сильно "сдвигаются" в сторону, что открывает весьма интересные стороны казалось бы банальных рекомендаций :)
--__Александр__--
Дата: 24.02.2010 10:14:18
Crimean
Ок, а чем вы пользуетесь? Как повышаете производительность вставки?
Кластерные индексы у вас по монотонно изменяющимся полям?(например по дате вставки).


-----------------
open your mind
Павел-П
Дата: 24.02.2010 11:07:39
--__Александр__--,

1. Про сравнение производительности таблиц с кластерным индексом и без него можно почитать здесь.
http://msdn.microsoft.com/en-us/library/cc917672.aspx
Статья мне очень понравилась.

2. В свое время работали с таблицей в котору вставлялось очень много данных в короткий промежуток времени. Изначально таблица имела Clustered PK на колонку типа uniqueidentifier. Когда PK сделали NOT CLUSTERED, а clustered index перенесли на другую монотонно возврастающую колонку (дата) - производительность выросла в полтора раза.

3. Думаю, что вообщем статья приведенная выше отвечает на Ваш вопрос. Там много разнообразных тестов и в конце приведены выводы.
Given all the analysis about why concurrent inserts on a table with a clustered index on a monotonically increasing column is slower than that of a nonclustered index, it must be noted that the performance difference is not practically significant. For the case with 50 concurrent sessions, the difference in the execution time per insert is only 1.20 milliseconds. For most applications, an overhead of 1.20 milliseconds is not significant. Fifty concurrent sessions inserting data into a table without any think time between consecutive statements represents a very significant workload. And even for such a high workload, the performance penalty for having a clustered index is negligible.

Ну а во всем остальном это вопрос конкретной системы.
--__Александр__--
Дата: 24.02.2010 11:20:07
Павел-П

Спасибо. То что нужно )) Век живи - век учись.

-----------------
open your mind
Александр Гладченко
Дата: 24.02.2010 14:17:38
--__Александр__--
Павел-П

Спасибо. То что нужно )) Век живи - век учись.

-----------------
open your mind


Почитайте лучше это: http://msdn.microsoft.com/ru-ru/library/dd425070(en-us).aspx