Sybase: влияет ли порядок столбцов в некластеризованном индексе на производительность вставки?

Чтобы быть более конкретным (поскольку общий ответ на эту тему, скорее всего, «да»):

У нас есть таблица с большим количеством данных в Sybase.

Один из столбцов — «дата вставки» (DATE, тип datetime).

Кластеризованный индекс в таблице начинается с «DATE».

Вопрос. Влияет ли для другого некластеризованного индекса порядок столбцов (точнее, является ли "DATE" первым или вторым столбцом индекса) на производительность запроса insert?

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


person DVK    schedule 23.09.2009    source источник


Ответы (2)


какая схема блокировки используется для таблицы All-pages или data-pages? (вы можете узнать, выбрав lockscheme('table_name'). Производительность (наблюдаемая приложением) обслуживания индекса намного лучше со схемой блокировки страниц данных.

Индекс заказан. Время вставки зависит от стоимости поддержания этого заказа. Если вы вставляете строки с монотонно возрастающими значениями для индексируемых столбцов, тогда индекс будет расти «в конце», и производительность будет отличной (по модулю любых проблем параллелизма из-за нескольких одновременных обновлений). Дерево индексов необходимо время от времени перебалансировать, но я считаю, что это быстрая операция.

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

в любом случае, ответ — как всегда — заключается в проведении некоторых экспериментов и измерении затраченного времени и активности ввода-вывода. Вы также можете посмотреть вывод optdiag.

pjjH

person Paul Harrington    schedule 23.09.2009

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

person Mitch Wheat    schedule 23.09.2009
comment
Как можно определить коэффициент заполнения существующего индекса на Sybase? Оператор создания индекса не содержал явного коэффициента заполнения. - person DVK; 23.09.2009
comment
Запрос к sysobjects и sysindexes: выберите o.name, i.name,i.fill_factor, i.exp_rowsize из sysobjects o JOIN sysindexes i ON (o.id = i.id) Также посмотрите на вывод sp_configure 'коэффициент заполнения по умолчанию ' - person Paul Harrington; 24.09.2009