Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
god44 Member Откуда: Сообщений: 148 |
Вопрос: можно ли посчитать процент фрагментации всей базы данных. Или нет такой функции? Конечно кто то может сказать , что повесь в планировщик реиндексацию и забей - в ответ скажу что хочу контролировать. Кто то скажет что можно посмотреть "sys.dm_db_index_physical_stats" , но там слишком детально , а когда у тебя десятки серверов и баз данных, то нужен 1 показатель по каждой базе данных. |
12 июл 19, 15:21 [21925802] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
god44, вам к людям считающим среднюю температуру по больнице. Как таким людям дают десятки серверов? |
12 июл 19, 15:25 [21925809] Ответить | Цитировать Сообщить модератору |
Sergey Syrovatchenko Member Откуда: Сообщений: 169 |
Скажу еще больше потяние фрагментация штука относительная. sys.dm_db_index_physical_stats не берет во внимание ин-мемори, колумнсторы и много еще чего по мелочи.
Плюсую. |
||||
12 июл 19, 15:32 [21925816] Ответить | Цитировать Сообщить модератору |
god44 Member Откуда: Сообщений: 148 |
TaPaK, если вы такой умный, а не просто "троль" или может "бот" сервера... какой показатель фрагментации вам будет интересен и прозрачен? Хотя вы видимо один из тех кто крутит динамо и доказывает руководству о его полезности))) Нет ответа - пишем всякую хрень. |
12 июл 19, 15:42 [21925831] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37146 |
god44,
|
|
12 июл 19, 15:49 [21925835] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37146 |
god44, Показатель должен быть такой: "в этой базе есть как минимум одна таблица, которой необходимо делать maintenance". А не среднее по больнице, как вам уже намекнули. Сообщение было отредактировано: 12 июл 19, 15:51 |
12 июл 19, 15:51 [21925837] Ответить | Цитировать Сообщить модератору |
god44 Member Откуда: Сообщений: 148 |
Гавриленко Сергей Алексеевич, У таблицы есть вес. И если таблица дефрагметирована на 50% , а весит 16 КБ то и фиг с ней. Отобрать все весомые таблицы и их смотреть? Нужен индикатор который говорит о том что пора посмотреть на базу данных. По поводу намеков: средняя температура по больнице это нормальный показатель котроый можно вычислить исходя из санпина и применив распеределение по стьюденту))) |
12 июл 19, 16:00 [21925851] Ответить | Цитировать Сообщить модератору |
god44 Member Откуда: Сообщений: 148 |
Sergey Syrovatchenko, Прочитал один из ваших коментов - уточните почему вы считаете дефрагметацию не целессобразной? |
12 июл 19, 16:04 [21925860] Ответить | Цитировать Сообщить модератору |
Дмитрий Мух Member Откуда: Зеленоград Сообщений: 3820 |
Хм, запрос к sys.dm_db_index_physical_stats - это обычный запрос. В SELECT можно указать необходимые колонки и агрегаты, если хочется высчитать некий показатель по всей базе. Также можно указать необходимые JOIN и фильтры по только "весомым" таблицам. Вообщем не вижу проблем, чтобы посчитать то, что вам надо. |
||
12 июл 19, 16:14 [21925883] Ответить | Цитировать Сообщить модератору |
Yasha123 Member Откуда: Сообщений: 1955 |
...слегка поднимающий данные с диска в память. вам не доводилось работать на сервере с 24Гб памяти и базой в пару терабайт? |
||
12 июл 19, 16:21 [21925891] Ответить | Цитировать Сообщить модератору |
982183 Member Откуда: VL Сообщений: 3374 |
Ну так надо данный показатель индикатор определить, посчитать и вывести. Если есть попугаи для каждой таблицы и её размеры. то несложно сделать либо фильтр по размерам/весу либо другой расчет. |
||
12 июл 19, 16:25 [21925897] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8320 |
Это выдумки, у базы нет процента фрагментации. Фрагментация есть у файла базы данных. Фрагментация есть у таблицы и индекса. |
||
12 июл 19, 16:26 [21925899] Ответить | Цитировать Сообщить модератору |
god44 Member Откуда: Сообщений: 148 |
Дмитрий Мух, Это все понятно и структуру параметров и ответа я знаю. Я считаю ,что зная назмер бд и весомость каждого индекса я могу посчить процент фрагментации всей БД. Но может есть проще? |
12 июл 19, 16:28 [21925901] Ответить | Цитировать Сообщить модератору |
god44 Member Откуда: Сообщений: 148 |
Владислав Колосов, Индекс это объект базы данных и он фрагментрован, значит база фрагментирована. |
12 июл 19, 16:29 [21925903] Ответить | Цитировать Сообщить модератору |
Sergey Syrovatchenko Member Откуда: Сообщений: 169 |
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] Ответить | Цитировать Сообщить модератору |
god44 Member Откуда: Сообщений: 148 |
Sergey Syrovatchenko, При запросе раз в сутки на производительности не скажется. Здесь получился действительно средний по больнице коли такая формулировка принята)) Я сделал тоже самое но с учетом весомости индекса относительно веса базы данных. |
12 июл 19, 16:42 [21925922] Ответить | Цитировать Сообщить модератору |
Yasha123 Member Откуда: Сообщений: 1955 |
вот же блин, нет, вы реально не запускали эту жопу на базе в 2Тб, ну или у вас памяти вагон ---- перевести бы некоторых на 24Гб, чтобы ценили то, что имеют |
||
12 июл 19, 16:44 [21925924] Ответить | Цитировать Сообщить модератору |
Sergey Syrovatchenko Member Откуда: Сообщений: 169 |
Я тут в соседнем топике про свою тулу чуть пиарю, но чтобы вы понимали я убил более полугода, чтобы найти хоть какой-то разумный компромисс при работе с sys.dm_db_index_physical_stats. Повторюсь данные оттуда не кешируются на постоянно основе. Все данные в таблицах что у вас есть буду высканиваться. PLE будет в районе нуля. Потом начнется новый день и что будет... тормоза :) Если памяти хватает и диски быстрые - то велкомс. |
||
12 июл 19, 16:48 [21925925] Ответить | Цитировать Сообщить модератору |
god44 Member Откуда: Сообщений: 148 |
Yasha123, Я могу себе позволить сделать это ночью. |
12 июл 19, 16:50 [21925927] Ответить | Цитировать Сообщить модератору |
god44 Member Откуда: Сообщений: 148 |
Sergey Syrovatchenko, Ссылку дадите? Мне жватет памяти и запускаю ночью |
12 июл 19, 16:52 [21925928] Ответить | Цитировать Сообщить модератору |
Sergey Syrovatchenko Member Откуда: Сообщений: 169 |
god44, ссылку на что? |
12 июл 19, 16:55 [21925934] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37146 |
Sergey Syrovatchenko, На свой профиль, где есть список тем автора, в котором одна тема. |
12 июл 19, 16:56 [21925936] Ответить | Цитировать Сообщить модератору |
god44 Member Откуда: Сообщений: 148 |
Sergey Syrovatchenko, Я тут в соседнем топике про свою тулу чуть пиарю, но чтобы вы понимали я убил более полугода, чтобы найти хоть какой-то разумный компромисс при работе с sys.dm_db_index_physical_stats.... на соседний топик и компромис)) |
12 июл 19, 16:56 [21925939] Ответить | Цитировать Сообщить модератору |
Дмитрий Мух Member Откуда: Зеленоград Сообщений: 3820 |
На ваш топик. Вы написали выше: "Я тут в соседнем топике про свою тулу чуть пиарю". Так вот человек не понял то, что соседний топик - это тема, созданная вами, и её трудно не найти в вашем профиле :) |
||
12 июл 19, 16:57 [21925940] Ответить | Цитировать Сообщить модератору |
god44 Member Откуда: Сообщений: 148 |
Гавриленко Сергей Алексеевич, Спасибо |
12 июл 19, 16:58 [21925941] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
Все форумы / Microsoft SQL Server | ![]() |