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

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

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

А sysindexes тут совершенно не при чем. :)
...
Рейтинг: 0 / 0
24.06.2002, 18:03:02
    #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
24.06.2002, 18:11:26
    #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
24.06.2002, 18:29:57
    #32033685
VVG_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать сколько места занимает конкретная хр.процедура ?
Позволю не согласиться.

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

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

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

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

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


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