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

Откуда:
Сообщений: 23
Всем привет.
Коллеги, никак один вопрос побороть не могу.
MSSQL 2012, отчёт "физическая статистика индекса" показывает ряд индексов, которые подлежат перестроению или реорганизации.
На примере одного индекса опишу свой вопрос.
Есть таблица L_Area_Area , которая содержит индекс PK_Area_Area. Данный индекс - кластеризованный.
avg_fragmentation_in_percent данного индекса = 85,7142857142857
Согласно доке https://msdn.microsoft.com/ru-ru/library/ms189858.aspx#Fragmentation , если величина более 30% , то индекс подлежит реорганизации.
Произвожу реорганизацию:

USE MYDB;
GO
ALTER INDEX PK_Area_Area ON L_Area_Area
REBUILD;
GO

Через management studio из GUI так же пробовал. Всё выполняется, однако, последующее построение отчета использования индекса не меняет значение средней фрагментации, так и остаётся 86%.
Подскажите куда копнуть, чтоб всё же сделать фрагментацию меньше. Спасибо
18 июл 16, 12:27    [19422564]     Ответить | Цитировать Сообщить модератору
 Re: Rebuild кластерного индекса  [new]
o-o
Guest
Сколько страниц занимает этот индекс, 4?
18 июл 16, 12:29    [19422581]     Ответить | Цитировать Сообщить модератору
 Re: Rebuild кластерного индекса  [new]
dimugric
Member

Откуда:
Сообщений: 23
Число страниц - 7
Число фрагментов - 7
Среднее число страниц на фрагмент - 1
Средняя фрагментация (%) - 86%
18 июл 16, 12:31    [19422595]     Ответить | Цитировать Сообщить модератору
 Re: Rebuild кластерного индекса  [new]
o-o
Guest
dimugric,
Оставьте в покое индексы с числом страниц менее 5000
18 июл 16, 12:38    [19422652]     Ответить | Цитировать Сообщить модератору
 Re: Rebuild кластерного индекса  [new]
dimugric
Member

Откуда:
Сообщений: 23
o-o, т.е. нет смысла фрагментировать такие индексы?
18 июл 16, 12:40    [19422658]     Ответить | Цитировать Сообщить модератору
 Re: Rebuild кластерного индекса  [new]
o-o
Guest
Именно.
Только ДЕфрагментировать.
-----
И еще, когда ребилдите, это называется ребилд.
А не реорг. REORGANIZE <> REBUILD
18 июл 16, 12:45    [19422687]     Ответить | Цитировать Сообщить модератору
 Re: Rebuild кластерного индекса  [new]
dimugric
Member

Откуда:
Сообщений: 23
Прошу прощения, верно, ребилд.
Не совсем понял про "Только ДЕфрагментировать"
Вроде бы я над индексом могу надругаться только двумя способами: перестроение и реорганизация
18 июл 16, 12:52    [19422733]     Ответить | Цитировать Сообщить модератору
 Re: Rebuild кластерного индекса  [new]
Pavel1211
Member

Откуда: Екатеринбург
Сообщений: 205
dimugric,

о-о вам намекнул на то что вы выполняете ДЕфрагментацию.
А Фрагментацию выполняют процессы, которые изменяют/удаляют данные.
18 июл 16, 12:56    [19422760]     Ответить | Цитировать Сообщить модератору
 Re: Rebuild кластерного индекса  [new]
o-o
Guest
dimugric
o-o, т.е. нет смысла фрагментировать такие индексы?

В этой фразе должно быть ДЕфрагментировать.
Уже все фрагментировано до вас :)
18 июл 16, 12:58    [19422773]     Ответить | Цитировать Сообщить модератору
 Re: Rebuild кластерного индекса  [new]
dimugric
Member

Откуда:
Сообщений: 23
Ок, не уловил мысль)
Спасибо большое, коллеги
18 июл 16, 13:00    [19422788]     Ответить | Цитировать Сообщить модератору
 Re: Rebuild кластерного индекса  [new]
dimugric
Member

Откуда:
Сообщений: 23
Пользуясь случаем спрошу, может кто подскажет скрипт по поиску индексов в БД, с размером страниц более N шт?
18 июл 16, 13:11    [19422844]     Ответить | Цитировать Сообщить модератору
 Re: Rebuild кластерного индекса  [new]
o-o
Guest
Размер страниц всегда 8Kb.
А число страниц все в том же dm_db_index_physical_stats, разве вы не в нем смотрите avg_fragmentation_in_percenr?
18 июл 16, 13:21    [19422897]     Ответить | Цитировать Сообщить модератору
 Re: Rebuild кластерного индекса  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
dimugric
по поиску индексов в БД, с размером страниц более N шт?

SELECT o.name, i.name, t.total_pages
FROM (
    SELECT p.[object_id], p.index_id, total_pages = SUM(a.total_pages)
    FROM sys.allocation_units a
    JOIN sys.partitions p ON a.container_id = p.[partition_id]
    WHERE a.[type] = 1
    GROUP BY p.[object_id], p.index_id
    --HAVING SUM(a.total_pages) > ...
) t
JOIN sys.objects o ON o.[object_id] = t.[object_id]
JOIN sys.indexes i ON o.[object_id] = i.[object_id] AND i.index_id = t.index_id
WHERE o.[type] IN ('U', 'V')
    AND o.is_ms_shipped = 0
18 июл 16, 13:28    [19422936]     Ответить | Цитировать Сообщить модератору
 Re: Rebuild кластерного индекса  [new]
Pavel1211
Member

Откуда: Екатеринбург
Сообщений: 205
o-o,

через ГУИ наверно смотрит
18 июл 16, 13:30    [19422948]     Ответить | Цитировать Сообщить модератору
 Re: Rebuild кластерного индекса  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
WHERE a.[type] = 1

только это условие убрать нужно. Ошибочка вышла... + еще можно посмотреть на размер страниц через:

SELECT o.name, i.name, t.page_count
FROM (
    SELECT d.[object_id], d.index_id, page_count = SUM(d.page_count)
    FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, NULL) d
    GROUP BY d.[object_id], d.index_id
) t
JOIN sys.indexes i ON t.[object_id] = i.[object_id] AND t.index_id = i.index_id
JOIN sys.objects o ON t.[object_id] = o.[object_id]
18 июл 16, 13:34    [19422968]     Ответить | Цитировать Сообщить модератору
 Re: Rebuild кластерного индекса  [new]
Pavel1211
Member

Откуда: Екатеринбург
Сообщений: 205
Pavel1211,

Хотя эта инфа там тоже есть.
18 июл 16, 13:34    [19422969]     Ответить | Цитировать Сообщить модератору
 Re: Rebuild кластерного индекса  [new]
dimugric
Member

Откуда:
Сообщений: 23
o-o
Размер страниц всегда 8Kb.
А число страниц все в том же dm_db_index_physical_stats, разве вы не в нем смотрите avg_fragmentation_in_percenr?


Данный параметр из отчета через management studio брал.
Спасибо большое за скрипт
18 июл 16, 14:29    [19423243]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить