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

Откуда:
Сообщений: 174
Добрый день,

С SQL Server недавно работаю, вот интересует можно ли у некластеризованного индекса как-то Clustering factor посмотреть?
Понятие из оракла, я ниже определение приведу, но насколько я помню, я его и в DB2 мог посмотреть через Quest Central. А в MSSQL сколько не гуглил, так и не нашел как это сделать.

The clustering factor is a measure of the ordered-ness of an index in comparison to the table that it is based on. It is used to check the cost of a table lookup following an index access (multiplying the clustering factor by index's selectivity gives you the cost of the operation).
12 апр 16, 15:14    [19047779]     Ответить | Цитировать Сообщить модератору
 Re: Clustering factor в SQL Server?  [new]
Glory
Member

Откуда:
Сообщений: 104760
По-моему, таким заумным словом в оракле называют простую фрагментацию объектов
12 апр 16, 15:30    [19047901]     Ответить | Цитировать Сообщить модератору
 Re: Clustering factor в SQL Server?  [new]
o-o
Guest
Какая-то лабуда написана. "упорядоченность индекса в сравнении с базовой таблицей"?
У индекса упорядоченность в порядке его ключа, при чем тут базовая таблица?
А стоимость лукапа в базовую таблицу равна 1, если это куча, или равна количеству уровней кластерного индекса.
В любом случае стоимость лукапа это характеристика базовой таблицы, а не индекса, на нее смотрящего
12 апр 16, 15:30    [19047904]     Ответить | Цитировать Сообщить модератору
 Re: Clustering factor в SQL Server?  [new]
Konst_One
Member

Откуда:
Сообщений: 11540
может про fill factor речь?
12 апр 16, 15:32    [19047916]     Ответить | Цитировать Сообщить модератору
 Re: Clustering factor в SQL Server?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
ananas2,

раз все угадывают, то я ставлю на

Reorganize and Rebuild Indexes
в частности про
avg_fragmentation_in_percent
The percent of logical fragmentation (out-of-order pages in the index)
12 апр 16, 15:39    [19047945]     Ответить | Цитировать Сообщить модератору
 Re: Clustering factor в SQL Server?  [new]
Konst_One
Member

Откуда:
Сообщений: 11540
вот нашёл описание подробненькое про это чудо от оракла (это просто показатель "удачности" индекса, чем меньше , тем лучше)

http://www.dba-oracle.com/art_index_clustering_factor.htm
12 апр 16, 15:39    [19047947]     Ответить | Цитировать Сообщить модератору
 Re: Clustering factor в SQL Server?  [new]
o-o
Guest
TaPaK
раз все угадывают, то я ставлю на
Reorganize and Rebuild Indexes

а я не ставлю.
потому что стоимость лукапа не имеет отношения к фрагментации.
я понимаю еще, они бы писали про доступ к самому индексу,
да и то, если это range scan, а не единичный access.
а у них там четко написано:
It is used to check the cost of a table lookup following an index access
т.е. речь о стоимости обращения к базовой таблице
после того как к индексу уже обратились.
базовой таблице фиолетово, как они обращались к индексу
12 апр 16, 15:46    [19047995]     Ответить | Цитировать Сообщить модератору
 Re: Clustering factor в SQL Server?  [new]
o-o
Guest
а еще я думаю, если ТСу так оно надо,
то именно он должен объяснить, что сие означает в Оракле.
может, в SQL Server-е и вовсе нет аналога этому делу.
мне лично лень читать, что они там в Оракле понимают под "блоками".
12 апр 16, 15:51    [19048036]     Ответить | Цитировать Сообщить модератору
 Re: Clustering factor в SQL Server?  [new]
Konst_One
Member

Откуда:
Сообщений: 11540
блоки данных вроде
самый плохой случай, это когда значение этого фактора равна числу строк данных
12 апр 16, 15:53    [19048052]     Ответить | Цитировать Сообщить модератору
 Re: Clustering factor в SQL Server?  [new]
o-o
Guest
Konst_One
блоки данных вроде
самый плохой случай, это когда значение этого фактора равна числу строк данных

так какие блоки данных?
блок это страница?
или у них как раз все пространство не на страницы, а на блоки поделено?
а вообще все уверены, что у них там тоже кластерные и некластерные индексы?
я помню, аналог кластерного у них назывался IOT = index organized table.
а тут вроде об этом речи не идет.
тогда что там у них кластер?
не, а главное, какое всем в этой ветке дело до того, что они там чем называют и как данные организовывают?
тут дай бог со своими индексами разобраться, можно подумать, раз в неделю не вылазит кто-то,
требующий объяснить на пальцах индексы в SQL Server-е
12 апр 16, 16:04    [19048126]     Ответить | Цитировать Сообщить модератору
 Re: Clustering factor в SQL Server?  [new]
Konst_One
Member

Откуда:
Сообщений: 11540
да, мутное дело переводить из одной системы координат в другую =)
12 апр 16, 16:06    [19048138]     Ответить | Цитировать Сообщить модератору
 Re: Clustering factor в SQL Server?  [new]
ananas2
Member

Откуда:
Сообщений: 174
Konst_One
вот нашёл описание подробненькое про это чудо от оракла (это просто показатель "удачности" индекса, чем меньше , тем лучше)

http://www.dba-oracle.com/art_index_clustering_factor.htm


Да, все правильно, это эдакий коэффицент отсортированности индекса относительно того как отсортирована таблица. Т.е. если коэфицент хороший, то key lookup для данного индекса будет жрать меньше ресурсов.
Например, есть некластеризованный индекс на salary
Select salary from table where salary > 100 and salary < 1000 

Запрос возвращает 100 значений. Если фактор кластеризации идеальный, то понадобится 3-5 I/O, сканируя индекс, если же плохой то может и 100-200 I/O
12 апр 16, 16:08    [19048158]     Ответить | Цитировать Сообщить модератору
 Re: Clustering factor в SQL Server?  [new]
Glory
Member

Откуда:
Сообщений: 104760
ananas2
это эдакий коэффицент отсортированности индекса относительно того как отсортирована таблица.

И в чем он меряется ?
12 апр 16, 16:11    [19048178]     Ответить | Цитировать Сообщить модератору
 Re: Clustering factor в SQL Server?  [new]
Konst_One
Member

Откуда:
Сообщений: 11540
в попугаях, конечно
это изобретение оракла
12 апр 16, 16:12    [19048184]     Ответить | Цитировать Сообщить модератору
 Re: Clustering factor в SQL Server?  [new]
o-o
Guest
Konst_One
да, мутное дело переводить из одной системы координат в другую =)

а главное, зачем?
спросил бы, что ему надо оценить, или хотя бы зачем.
своими словами и желательно в терминах SQL Server-а или общепонятных,
а не Оракла.
вот давайте я к ним пойду и спрошу: вот у меня page_count (sys.dm_db_index_physical_stats) показывает число страниц,
а у вас что может мне это же показать?
а они сделают квадратные глаза и скажут: какие еще страницы, тут Оракл, а ты откуда такое чучело пришло?
и будут правы.
а если я попытаюсь объяснить, хотя бы так:
вы что, я же провожу дефрагментацию, отсеивая мини-индексы,
как же я без страниц-то отфильтрую?
может кто и подскажет, как они фильтруют.
ведь уже указано то, что мне надо: хочу размер индекса оценить.
вот и сравните: число страниц и размер индекса, какая из формулировок является серверо-специфичной,
а что и простому смертному понятно
12 апр 16, 16:14    [19048201]     Ответить | Цитировать Сообщить модератору
 Re: Clustering factor в SQL Server?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
o-o
Konst_One
да, мутное дело переводить из одной системы координат в другую =)

ведь уже указано то, что мне надо: хочу размер индекса оценить.
вот и сравните: число страниц и размер индекса, какая из формулировок является серверо-специфичной,
а что и простому смертному понятно

и получаем
avg_fragmentation_in_percent
The percent of logical fragmentation (out-of-order pages in the index)
12 апр 16, 16:21    [19048237]     Ответить | Цитировать Сообщить модератору
 Re: Clustering factor в SQL Server?  [new]
ananas2
Member

Откуда:
Сообщений: 174
Glory
ananas2
это эдакий коэффицент отсортированности индекса относительно того как отсортирована таблица.

И в чем он меряется ?


Кол-во I/O которое необходимо затратить на прочтение всей таблицы используя индекс. В общем, я затупил, можно же сделать
select * from table WITH (INDEX (index_name)), и посмотреть сколько будет logical reads. Извиняюсь за потраченное время.
12 апр 16, 16:21    [19048243]     Ответить | Цитировать Сообщить модератору
 Re: Clustering factor в SQL Server?  [new]
Glory
Member

Откуда:
Сообщений: 104760
ananas2
Кол-во I/O которое необходимо затратить на прочтение всей таблицы используя индекс

И как _отсортированность_ уменьшит число IO ?
Может все таки дефрагментация уменьшит число IO за счет того, что индекс будет занимать меньшее число страниц ?
12 апр 16, 16:24    [19048255]     Ответить | Цитировать Сообщить модератору
 Re: Clustering factor в SQL Server?  [new]
o-o
Guest
TaPaK
o-o
пропущено...

ведь уже указано то, что мне надо: хочу размер индекса оценить.
вот и сравните: число страниц и размер индекса, какая из формулировок является серверо-специфичной,
а что и простому смертному понятно

и получаем
avg_fragmentation_in_percent
The percent of logical fragmentation (out-of-order pages in the index)

это шутка такая или у вас пластинку заело?
при чем тут ваша фрагментация, когда я просто привожу пример,
как можно по-разному одно и то же спросить,
с той разницей, что тебя гарантированно сразу пошлют, или может быть поймут и ответят
12 апр 16, 16:29    [19048286]     Ответить | Цитировать Сообщить модератору
 Re: Clustering factor в SQL Server?  [new]
ananas2
Member

Откуда:
Сообщений: 174
Glory
ananas2
Кол-во I/O которое необходимо затратить на прочтение всей таблицы используя индекс

И как _отсортированность_ уменьшит число IO ?
Может все таки дефрагментация уменьшит число IO за счет того, что индекс будет занимать меньшее число страниц ?


К сообщению приложен файл. Размер - 143Kb
12 апр 16, 16:29    [19048287]     Ответить | Цитировать Сообщить модератору
 Re: Clustering factor в SQL Server?  [new]
Glory
Member

Откуда:
Сообщений: 104760
ananas2
Glory
пропущено...

И как _отсортированность_ уменьшит число IO ?
Может все таки дефрагментация уменьшит число IO за счет того, что индекс будет занимать меньшее число страниц ?


Картинка с другого сайта.

На этой картинке я лично вижу дефрагментацию
12 апр 16, 16:30    [19048295]     Ответить | Цитировать Сообщить модератору
 Re: Clustering factor в SQL Server?  [new]
o-o
Guest
ananas2
Кол-во I/O которое необходимо затратить на прочтение всей таблицы используя индекс

для прочтения всей таблицы сервер не будет лезть в индекс.
он сразу таблицу станет читать
12 апр 16, 16:31    [19048299]     Ответить | Цитировать Сообщить модератору
 Re: Clustering factor в SQL Server?  [new]
ananas2
Member

Откуда:
Сообщений: 174
Glory
ananas2
пропущено...


Картинка с другого сайта.

На этой картинке я лично вижу дефрагментацию


Да, видимо, в SQL Server это так и называется)
TaPaK правильно подсказал, похоже:
avg_fragmentation_in_percent
The percent of logical fragmentation (out-of-order pages in the index)

SELECT OBJECT_NAME(OBJECT_ID), avg_fragmentation_in_percent
FROM sys.dm_db_index_physical_stats
12 апр 16, 16:37    [19048331]     Ответить | Цитировать Сообщить модератору
 Re: Clustering factor в SQL Server?  [new]
o-o
Guest
а я и вовсе вижу фигню на картинке.
потому что у некластерного индекса свой ключ,
а у таблицы, если она кластерная, свой.
ну и если это куча, то и вовсе нет ни ключа, ни упорядочения.
но в любом случае, если порывшись в индексе, сервер вытащит
нужные РИДы или ключи кластерного, кто сказал, что они в кластерной таблице будут расположены по порядку?
да не будут никогда, и на каждый вытащенный РИД или ключ кластерного все равно свой собственный розничный лукап,
а никакой не "оптовый"
12 апр 16, 16:38    [19048339]     Ответить | Цитировать Сообщить модератору
 Re: Clustering factor в SQL Server?  [new]
Konst_One
Member

Откуда:
Сообщений: 11540
похоже никак нельзя найти аналогии ораклового понятия в mssql, тк физическая структура другая
12 апр 16, 16:40    [19048354]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить