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

Откуда:
Сообщений: 131
Вопрос: можно ли посчитать процент фрагментации всей базы данных. Или нет такой функции?


Конечно кто то может сказать , что повесь в планировщик реиндексацию и забей - в ответ скажу что хочу контролировать. Кто то скажет что можно посмотреть "sys.dm_db_index_physical_stats" , но там слишком детально , а когда у тебя десятки серверов и баз данных, то нужен 1 показатель по каждой базе данных.
12 июл 19, 15:21    [21925802]     Ответить | Цитировать Сообщить модератору
 Re: Дефрагметация базы данных  [new]
TaPaK
Member

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

вам к людям считающим среднюю температуру по больнице. Как таким людям дают десятки серверов?
12 июл 19, 15:25    [21925809]     Ответить | Цитировать Сообщить модератору
 Re: Дефрагметация базы данных  [new]
Sergey Syrovatchenko
Member

Откуда:
Сообщений: 126
god44
но там слишком детально

Скажу еще больше потяние фрагментация штука относительная. sys.dm_db_index_physical_stats не берет во внимание ин-мемори, колумнсторы и много еще чего по мелочи.

TaPaK
вам к людям считающим среднюю температуру по больнице

Плюсую.
12 июл 19, 15:32    [21925816]     Ответить | Цитировать Сообщить модератору
 Re: Дефрагметация базы данных  [new]
god44
Member

Откуда:
Сообщений: 131
TaPaK,
если вы такой умный, а не просто "троль" или может "бот" сервера... какой показатель фрагментации вам будет интересен и прозрачен? Хотя вы видимо один из тех кто крутит динамо и доказывает руководству о его полезности)))

Нет ответа - пишем всякую хрень.
12 июл 19, 15:42    [21925831]     Ответить | Цитировать Сообщить модератору
 Re: Дефрагметация базы данных  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36696
god44,

Модератор: Если вам интереснее обсуждать участников, а не ваш вопрос, я могу закрыть тему.
12 июл 19, 15:49    [21925835]     Ответить | Цитировать Сообщить модератору
 Re: Дефрагметация базы данных  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36696
god44,

Показатель должен быть такой: "в этой базе есть как минимум одна таблица, которой необходимо делать maintenance".
А не среднее по больнице, как вам уже намекнули.

Сообщение было отредактировано: 12 июл 19, 15:51
12 июл 19, 15:51    [21925837]     Ответить | Цитировать Сообщить модератору
 Re: Дефрагметация базы данных  [new]
god44
Member

Откуда:
Сообщений: 131
Гавриленко Сергей Алексеевич,

У таблицы есть вес. И если таблица дефрагметирована на 50% , а весит 16 КБ то и фиг с ней.
Отобрать все весомые таблицы и их смотреть? Нужен индикатор который говорит о том что пора посмотреть на базу данных.

По поводу намеков: средняя температура по больнице это нормальный показатель котроый можно вычислить исходя из санпина и применив распеределение по стьюденту)))
12 июл 19, 16:00    [21925851]     Ответить | Цитировать Сообщить модератору
 Re: Дефрагметация базы данных  [new]
god44
Member

Откуда:
Сообщений: 131
Sergey Syrovatchenko,

Прочитал один из ваших коментов - уточните почему вы считаете дефрагметацию не целессобразной?
12 июл 19, 16:04    [21925860]     Ответить | Цитировать Сообщить модератору
 Re: Дефрагметация базы данных  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 3112
god44
Кто то скажет что можно посмотреть "sys.dm_db_index_physical_stats" , но там слишком детально

Хм, запрос к sys.dm_db_index_physical_stats - это обычный запрос.

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

Вообщем не вижу проблем, чтобы посчитать то, что вам надо.
12 июл 19, 16:14    [21925883]     Ответить | Цитировать Сообщить модератору
 Re: Дефрагметация базы данных  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
Дмитрий Мух
Хм, запрос к sys.dm_db_index_physical_stats - это обычный запрос.

...слегка поднимающий данные с диска в память.
вам не доводилось работать на сервере с 24Гб памяти
и базой в пару терабайт?
12 июл 19, 16:21    [21925891]     Ответить | Цитировать Сообщить модератору
 Re: Дефрагметация базы данных  [new]
982183
Member

Откуда: VL
Сообщений: 3350
god44
Нужен индикатор который говорит о том что пора посмотреть на базу данных.

Ну так надо данный показатель индикатор определить, посчитать и вывести.
Если есть попугаи для каждой таблицы и её размеры. то несложно сделать либо фильтр по размерам/весу либо другой расчет.
12 июл 19, 16:25    [21925897]     Ответить | Цитировать Сообщить модератору
 Re: Дефрагметация базы данных  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7403
god44
Вопрос: можно ли посчитать процент фрагментации всей базы данных. Или нет такой функции?


Это выдумки, у базы нет процента фрагментации. Фрагментация есть у файла базы данных. Фрагментация есть у таблицы и индекса.
12 июл 19, 16:26    [21925899]     Ответить | Цитировать Сообщить модератору
 Re: Дефрагметация базы данных  [new]
god44
Member

Откуда:
Сообщений: 131
Дмитрий Мух,

Это все понятно и структуру параметров и ответа я знаю.

Я считаю ,что зная назмер бд и весомость каждого индекса я могу посчить процент фрагментации всей БД.
Но может есть проще?
12 июл 19, 16:28    [21925901]     Ответить | Цитировать Сообщить модератору
 Re: Дефрагметация базы данных  [new]
god44
Member

Откуда:
Сообщений: 131
Владислав Колосов,

Индекс это объект базы данных и он фрагментрован, значит база фрагментирована.
12 июл 19, 16:29    [21925903]     Ответить | Цитировать Сообщить модератору
 Re: Дефрагметация базы данных  [new]
Sergey Syrovatchenko
Member

Откуда:
Сообщений: 126
god44, фрагментация бывает логическая и физическая (в силу принципов работы разных типов дисков с ней можно бороться, но чаще всего это бессмысленно пример SSD + на виртуалке скажем от этого толку не будет). Если говорить за логическую, то вы добьетесь лишь уменьшения кол-ва страниц под хранения вашего индекса что положительно скажется на размере. И толку? Важнее актуальная статистика + если мы говорим за колумнсторы то чтобы не было открытых секций.

Если уж сильно хочется среднее по больнице то можно так сделать:

DROP TABLE IF EXISTS #temp

SELECT database_id
     , avg_fragmentation_in_percent
     , page_count
     , dbsize = SUM(page_count) OVER (PARTITION BY database_id)
INTO #temp
FROM sys.dm_db_index_physical_stats(NULL, NULL, NULL, NULL, NULL)
WHERE alloc_unit_type_desc = 'IN_ROW_DATA'
    AND index_level = 0
    AND page_count > 0

SELECT db = DB_NAME(t.database_id)
     , perc = AVG(t.avg_fragmentation_in_percent)
     , data_size = MAX(t.dbsize) * 8. / 1024
FROM (
    SELECT *, rn = ROW_NUMBER() OVER (PARTITION BY database_id ORDER BY page_count * 100. / dbsize DESC)
    FROM #temp
) t
WHERE t.rn < 20
GROUP BY t.database_id

Но серверу от такого будет очень плохо. Формально можно сделать быстрее, но суть не поменятся при каждом вызове будут физические чтения ибо инфу с этой системной функции сиксел не кеширует на постоянной основе.
12 июл 19, 16:31    [21925906]     Ответить | Цитировать Сообщить модератору
 Re: Дефрагметация базы данных  [new]
god44
Member

Откуда:
Сообщений: 131
Sergey Syrovatchenko,

При запросе раз в сутки на производительности не скажется.
Здесь получился действительно средний по больнице коли такая формулировка принята))

Я сделал тоже самое но с учетом весомости индекса относительно веса базы данных.
12 июл 19, 16:42    [21925922]     Ответить | Цитировать Сообщить модератору
 Re: Дефрагметация базы данных  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
god44
При запросе раз в сутки на производительности не скажется.

вот же блин,
нет, вы реально не запускали эту жопу на базе в 2Тб,
ну или у вас памяти вагон
----
перевести бы некоторых на 24Гб,
чтобы ценили то, что имеют
12 июл 19, 16:44    [21925924]     Ответить | Цитировать Сообщить модератору
 Re: Дефрагметация базы данных  [new]
Sergey Syrovatchenko
Member

Откуда:
Сообщений: 126
god44
При запросе раз в сутки на производительности не скажется.

Я тут в соседнем топике про свою тулу чуть пиарю, но чтобы вы понимали я убил более полугода, чтобы найти хоть какой-то разумный компромисс при работе с sys.dm_db_index_physical_stats. Повторюсь данные оттуда не кешируются на постоянно основе. Все данные в таблицах что у вас есть буду высканиваться. PLE будет в районе нуля. Потом начнется новый день и что будет... тормоза :)

Если памяти хватает и диски быстрые - то велкомс.
12 июл 19, 16:48    [21925925]     Ответить | Цитировать Сообщить модератору
 Re: Дефрагметация базы данных  [new]
god44
Member

Откуда:
Сообщений: 131
Yasha123,

Я могу себе позволить сделать это ночью.
12 июл 19, 16:50    [21925927]     Ответить | Цитировать Сообщить модератору
 Re: Дефрагметация базы данных  [new]
god44
Member

Откуда:
Сообщений: 131
Sergey Syrovatchenko,

Ссылку дадите?
Мне жватет памяти и запускаю ночью
12 июл 19, 16:52    [21925928]     Ответить | Цитировать Сообщить модератору
 Re: Дефрагметация базы данных  [new]
Sergey Syrovatchenko
Member

Откуда:
Сообщений: 126
god44, ссылку на что?
12 июл 19, 16:55    [21925934]     Ответить | Цитировать Сообщить модератору
 Re: Дефрагметация базы данных  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36696
Sergey Syrovatchenko,

На свой профиль, где есть список тем автора, в котором одна тема.
12 июл 19, 16:56    [21925936]     Ответить | Цитировать Сообщить модератору
 Re: Дефрагметация базы данных  [new]
god44
Member

Откуда:
Сообщений: 131
Sergey Syrovatchenko,

Я тут в соседнем топике про свою тулу чуть пиарю, но чтобы вы понимали я убил более полугода, чтобы найти хоть какой-то разумный компромисс при работе с sys.dm_db_index_physical_stats....
на соседний топик и компромис))
12 июл 19, 16:56    [21925939]     Ответить | Цитировать Сообщить модератору
 Re: Дефрагметация базы данных  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 3112
Sergey Syrovatchenko
god44, ссылку на что?

На ваш топик. Вы написали выше: "Я тут в соседнем топике про свою тулу чуть пиарю".
Так вот человек не понял то, что соседний топик - это тема, созданная вами, и её трудно не найти в вашем профиле :)
12 июл 19, 16:57    [21925940]     Ответить | Цитировать Сообщить модератору
 Re: Дефрагметация базы данных  [new]
god44
Member

Откуда:
Сообщений: 131
Гавриленко Сергей Алексеевич,

Спасибо
12 июл 19, 16:58    [21925941]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить