powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как узнать сколько места занимает конкретная хр.процедура ?
5 сообщений из 5, страница 1 из 1
Как узнать сколько места занимает конкретная хр.процедура ?
    #32033628
Приветствую!
Корректным ли будет расчет места занимаемое одной хр.процедуры в базе:
select sum(length) from syscolumns where id=object_id('syscomments') +
select sum(length) from syscolumns where id=object_id('sysobjects').
Опять же уменьшиться кол-во записей в sysindexes,что тоже не мешало бы учесть.
Вопрос есть ли у кого скрипт позволяющий расчитать
сколько физически в базе занимает конкретная хр.проц-ра.Вопрос связан с тем что в базе имеются "лишние" хр.
процедуры (неск.тысяч) к-е создала старая версия программного обеспечения и к-е хотелось бы удалить для
освобождения места в базе.Но прежде хотелось бы знать
"а что мы поимеем?" после их удаления...
...
Рейтинг: 0 / 0
Как узнать сколько места занимает конкретная хр.процедура ?
    #32033678
Фотография VVG_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы примерно оценивал так (для MSSQL2000):

select sum(len(ctext))+sum(len(text))+16*count(*) from syscomments where id = object_id('одна хр.процедура')

Но это теоретический размер в байтах. А как узнать количество освобожденных страниц - это оччень серьезный вопрос. :))

А sysindexes тут совершенно не при чем. :)
...
Рейтинг: 0 / 0
Как узнать сколько места занимает конкретная хр.процедура ?
    #32033679
Фотография VVG_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще параметры в syscolumns надо тоже посчитать:

select sum(len(name))+sum(len(isnull(collation,'')))+sum(len(isnull(autoval,0x0)))+69*count(*) from syscolumns where id = object_id('одна хр.процедура')
...
Рейтинг: 0 / 0
Как узнать сколько места занимает конкретная хр.процедура ?
    #32033682
select sum(len(ctext))+sum(len(text))+16*count(*) from syscomments where id = object_id('одна хр.процедура')
дает размер не всей записи из syscomments поэтому
я использовал select sum(length) from syscolumns ...
(см.выше).Т.е суммировал длины записей syscomments и
sysobjects т.к.записи о конкретной хр.процедуре хранятся
и там и там.Но таблицы syscomments и sysobjects емеют
индексы к-е при удалении записей также удаляются.В этом контексте я упоминал sysindexes.
Вопрос остается открытым...
...
Рейтинг: 0 / 0
Как узнать сколько места занимает конкретная хр.процедура ?
    #32033685
Фотография VVG_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Позволю не согласиться.

sum(len(ctext))+sum(len(text)) дают актуальный размер полей переменной длины, а 16*count(*) - это суммарный размер всех оставшихся (которые фиксированной длины) полей, умноженный на количество строк, использованных для описания процедуры. Так что размер получается правильный.

С syscolumns такая же ситуация.

Индексы можно посчитать аналогично.

Но еще раз повторюсь - размер физически освобожденных страниц останется для нас тайной за семью печатями. :) Поэтому подход совершенно неправильный.

Поэтому я бы сделал зеркало всей базы, удалил бы все, что не нужно, посмотрел на размеры и ОБЯЗАТЕЛЬНО проверил бы работоспособность ВСЕХ программ.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как узнать сколько места занимает конкретная хр.процедура ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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