Удаление первичного ключа (кластерный индекс) для увеличения производительности вставки

Мы испытывали тайм-ауты SQL и определили, что узкое место, чтобы быть таблицей аудита - все таблицы в нашей системе содержат вставлять, обновлять и удалять триггеры, которые вызывают новую запись аудита.

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

Выполните Выберите топ-10 , возвращаются недавно вставьте записи, а не «первые» записи. Работание Работает , конечно, но я ожидаю, что верхний топ должен вернуть строки на основе их порядка на диске, который я бы ожидал, что вернет самые низкие значения PK.

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

Какого рода производительности на столе создается кластерный индекс? Каковы последствия (не выбранные) разведочные, непрямые, нескрытые, таблицы с ключом? Любые другие предложения?

Отредактируйте

Наша аудита включает функции CLR, и я теперь сравниваю с PK, индексы, FKS и т. Д. Для определения относительной стоимости функций CLR и наоборот.

После расследования плохие характеристики не были связаны с вкладыванием , но вместо этого функция CLR, которая организовала аудит. После удаления CLR и вместо этого используя прямой Proc TSQL, производительность улучшена в 20 раз.

Во время тестирования я также определил, что кластерные столбцы индекса и идентификационные столбцы имеют мало или нет различий к времени вставки, по крайней мере, относительно любой другой обработки, которая имеет место.

// updating 10k rows in a table with trigger

// using CLR function
PK (identity, clustered)- ~78000ms
No PK, no index - ~81000ms

// using straight TSQL
PK (identity, clustered) - 2174ms
No PK, no index - 2102ms
5
задан AakashM 1 September 2011 в 09:15
поделиться