|
|
|
Как узнать сколько места занимает конкретная хр.процедура ?
|
|||
|---|---|---|---|
|
#18+
Приветствую! Корректным ли будет расчет места занимаемое одной хр.процедуры в базе: select sum(length) from syscolumns where id=object_id('syscomments') + select sum(length) from syscolumns where id=object_id('sysobjects'). Опять же уменьшиться кол-во записей в sysindexes,что тоже не мешало бы учесть. Вопрос есть ли у кого скрипт позволяющий расчитать сколько физически в базе занимает конкретная хр.проц-ра.Вопрос связан с тем что в базе имеются "лишние" хр. процедуры (неск.тысяч) к-е создала старая версия программного обеспечения и к-е хотелось бы удалить для освобождения места в базе.Но прежде хотелось бы знать "а что мы поимеем?" после их удаления... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2002, 14:29:50 |
|
||
|
Как узнать сколько места занимает конкретная хр.процедура ?
|
|||
|---|---|---|---|
|
#18+
Я бы примерно оценивал так (для MSSQL2000): select sum(len(ctext))+sum(len(text))+16*count(*) from syscomments where id = object_id('одна хр.процедура') Но это теоретический размер в байтах. А как узнать количество освобожденных страниц - это оччень серьезный вопрос. :)) А sysindexes тут совершенно не при чем. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2002, 17:53:31 |
|
||
|
Как узнать сколько места занимает конкретная хр.процедура ?
|
|||
|---|---|---|---|
|
#18+
И еще параметры в syscolumns надо тоже посчитать: select sum(len(name))+sum(len(isnull(collation,'')))+sum(len(isnull(autoval,0x0)))+69*count(*) from syscolumns where id = object_id('одна хр.процедура') ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2002, 18:03:02 |
|
||
|
Как узнать сколько места занимает конкретная хр.процедура ?
|
|||
|---|---|---|---|
|
#18+
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. Вопрос остается открытым... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2002, 18:11:26 |
|
||
|
Как узнать сколько места занимает конкретная хр.процедура ?
|
|||
|---|---|---|---|
|
#18+
Позволю не согласиться. sum(len(ctext))+sum(len(text)) дают актуальный размер полей переменной длины, а 16*count(*) - это суммарный размер всех оставшихся (которые фиксированной длины) полей, умноженный на количество строк, использованных для описания процедуры. Так что размер получается правильный. С syscolumns такая же ситуация. Индексы можно посчитать аналогично. Но еще раз повторюсь - размер физически освобожденных страниц останется для нас тайной за семью печатями. :) Поэтому подход совершенно неправильный. Поэтому я бы сделал зеркало всей базы, удалил бы все, что не нужно, посмотрел на размеры и ОБЯЗАТЕЛЬНО проверил бы работоспособность ВСЕХ программ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2002, 18:29:57 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32033628&tid=1822206]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 199ms |
| total: | 322ms |

| 0 / 0 |
