powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Дефрагметация базы данных
25 сообщений из 40, страница 1 из 2
Дефрагметация базы данных
    #39836880
god44
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос: можно ли посчитать процент фрагментации всей базы данных. Или нет такой функции?


Конечно кто то может сказать , что повесь в планировщик реиндексацию и забей - в ответ скажу что хочу контролировать. Кто то скажет что можно посмотреть "sys.dm_db_index_physical_stats" , но там слишком детально , а когда у тебя десятки серверов и баз данных, то нужен 1 показатель по каждой базе данных.
...
Рейтинг: 0 / 0
Дефрагметация базы данных
    #39836884
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
god44,

вам к людям считающим среднюю температуру по больнице. Как таким людям дают десятки серверов?
...
Рейтинг: 0 / 0
Дефрагметация базы данных
    #39836888
god44но там слишком детально
Скажу еще больше потяние фрагментация штука относительная. sys.dm_db_index_physical_stats не берет во внимание ин-мемори, колумнсторы и много еще чего по мелочи.

TaPaK вам к людям считающим среднюю температуру по больнице
Плюсую.
...
Рейтинг: 0 / 0
Дефрагметация базы данных
    #39836894
god44
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaK,
если вы такой умный, а не просто "троль" или может "бот" сервера... какой показатель фрагментации вам будет интересен и прозрачен? Хотя вы видимо один из тех кто крутит динамо и доказывает руководству о его полезности)))

Нет ответа - пишем всякую хрень.
...
Рейтинг: 0 / 0
Дефрагметация базы данных
    #39836896
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
god44,

Модератор: Если вам интереснее обсуждать участников, а не ваш вопрос, я могу закрыть тему.
...
Рейтинг: 0 / 0
Дефрагметация базы данных
    #39836897
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
god44,

Показатель должен быть такой: "в этой базе есть как минимум одна таблица, которой необходимо делать maintenance".
А не среднее по больнице, как вам уже намекнули.
...
Рейтинг: 0 / 0
Дефрагметация базы данных
    #39836900
god44
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей Алексеевич,

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

По поводу намеков: средняя температура по больнице это нормальный показатель котроый можно вычислить исходя из санпина и применив распеределение по стьюденту)))
...
Рейтинг: 0 / 0
Дефрагметация базы данных
    #39836903
god44
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Syrovatchenko,

Прочитал один из ваших коментов - уточните почему вы считаете дефрагметацию не целессобразной?
...
Рейтинг: 0 / 0
Дефрагметация базы данных
    #39836914
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
god44Кто то скажет что можно посмотреть "sys.dm_db_index_physical_stats" , но там слишком детально
Хм, запрос к sys.dm_db_index_physical_stats - это обычный запрос.

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

Вообщем не вижу проблем, чтобы посчитать то, что вам надо.
...
Рейтинг: 0 / 0
Дефрагметация базы данных
    #39836918
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухХм, запрос к sys.dm_db_index_physical_stats - это обычный запрос.

...слегка поднимающий данные с диска в память.
вам не доводилось работать на сервере с 24Гб памяти
и базой в пару терабайт?
...
Рейтинг: 0 / 0
Дефрагметация базы данных
    #39836922
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
god44Нужен индикатор который говорит о том что пора посмотреть на базу данных.
Ну так надо данный показатель индикатор определить, посчитать и вывести.
Если есть попугаи для каждой таблицы и её размеры. то несложно сделать либо фильтр по размерам/весу либо другой расчет.
...
Рейтинг: 0 / 0
Дефрагметация базы данных
    #39836924
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
god44Вопрос: можно ли посчитать процент фрагментации всей базы данных. Или нет такой функции?

Это выдумки, у базы нет процента фрагментации. Фрагментация есть у файла базы данных. Фрагментация есть у таблицы и индекса.
...
Рейтинг: 0 / 0
Дефрагметация базы данных
    #39836926
god44
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дмитрий Мух,

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

Я считаю ,что зная назмер бд и весомость каждого индекса я могу посчить процент фрагментации всей БД.
Но может есть проще?
...
Рейтинг: 0 / 0
Дефрагметация базы данных
    #39836928
god44
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов,

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

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

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
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


Но серверу от такого будет очень плохо. Формально можно сделать быстрее, но суть не поменятся при каждом вызове будут физические чтения ибо инфу с этой системной функции сиксел не кеширует на постоянной основе.
...
Рейтинг: 0 / 0
Дефрагметация базы данных
    #39836940
god44
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Syrovatchenko,

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

Я сделал тоже самое но с учетом весомости индекса относительно веса базы данных.
...
Рейтинг: 0 / 0
Дефрагметация базы данных
    #39836942
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
god44При запросе раз в сутки на производительности не скажется.

вот же блин,
нет, вы реально не запускали эту жопу на базе в 2Тб,
ну или у вас памяти вагон
----
перевести бы некоторых на 24Гб,
чтобы ценили то, что имеют
...
Рейтинг: 0 / 0
Дефрагметация базы данных
    #39836943
god44При запросе раз в сутки на производительности не скажется.
Я тут в соседнем топике про свою тулу чуть пиарю, но чтобы вы понимали я убил более полугода, чтобы найти хоть какой-то разумный компромисс при работе с sys.dm_db_index_physical_stats. Повторюсь данные оттуда не кешируются на постоянно основе. Все данные в таблицах что у вас есть буду высканиваться. PLE будет в районе нуля. Потом начнется новый день и что будет... тормоза :)

Если памяти хватает и диски быстрые - то велкомс.
...
Рейтинг: 0 / 0
Дефрагметация базы данных
    #39836944
god44
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yasha123,

Я могу себе позволить сделать это ночью.
...
Рейтинг: 0 / 0
Дефрагметация базы данных
    #39836945
god44
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Syrovatchenko,

Ссылку дадите?
Мне жватет памяти и запускаю ночью
...
Рейтинг: 0 / 0
Дефрагметация базы данных
    #39836949
god44, ссылку на что?
...
Рейтинг: 0 / 0
Дефрагметация базы данных
    #39836951
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Syrovatchenko,

На свой профиль, где есть список тем автора, в котором одна тема.
...
Рейтинг: 0 / 0
Дефрагметация базы данных
    #39836954
god44
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Syrovatchenko,

Я тут в соседнем топике про свою тулу чуть пиарю, но чтобы вы понимали я убил более полугода, чтобы найти хоть какой-то разумный компромисс при работе с sys.dm_db_index_physical_stats....
на соседний топик и компромис))
...
Рейтинг: 0 / 0
Дефрагметация базы данных
    #39836955
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Syrovatchenkogod44, ссылку на что?
На ваш топик. Вы написали выше: "Я тут в соседнем топике про свою тулу чуть пиарю".
Так вот человек не понял то, что соседний топик - это тема, созданная вами, и её трудно не найти в вашем профиле :)
...
Рейтинг: 0 / 0
Дефрагметация базы данных
    #39836956
god44
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей Алексеевич,

Спасибо
...
Рейтинг: 0 / 0
25 сообщений из 40, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Дефрагметация базы данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]