|
проверка, какие процедуры устарели
|
|||
---|---|---|---|
#18+
Добрый день. Такой вопрос, в базе накопилось примерно 800 хранимых процедур, наверное треть - это уже устаревшие никому не нужные процедуры. Как можно получить список процедур, которые не запускались уже полгода?? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2013, 16:42 |
|
проверка, какие процедуры устарели
|
|||
---|---|---|---|
#18+
Ivanich87, 1. начать вести журнал запуска процедур 2. через полгода сравнить журнал со списком имеющихся процедур ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2013, 17:04 |
|
проверка, какие процедуры устарели
|
|||
---|---|---|---|
#18+
ShakillIvanich87, 1. начать вести журнал запуска процедур 2. через полгода сравнить журнал со списком имеющихся процедур я надеялся что такое можно получить системными хранимыми процедурами. Чтобы вести журнал нужно добавить в каждую хп что то типа: Код: sql 1.
Как это сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2013, 17:08 |
|
проверка, какие процедуры устарели
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2013, 21:41 |
|
проверка, какие процедуры устарели
|
|||
---|---|---|---|
#18+
zindur Код: sql 1. 2. 3. 4. 5. 6. 7.
sys.dm_exec_procedure_stats When a stored procedure is removed from the cache, the corresponding row is eliminated from this view ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2013, 22:33 |
|
проверка, какие процедуры устарели
|
|||
---|---|---|---|
#18+
zindur Код: sql 1. 2. 3. 4. 5. 6. 7.
У меня sql 2005, там системной sys.dm_exec_procedure_stats, она только с 2008 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2013, 08:21 |
|
проверка, какие процедуры устарели
|
|||
---|---|---|---|
#18+
Господа, неужели sql2005 нет стандартных процедур по статистике запуска ХП?? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2013, 08:43 |
|
проверка, какие процедуры устарели
|
|||
---|---|---|---|
#18+
Не понимаю, почему надо дропать процедуру, если её давно не вызывали? Где логика? Если бы надо было выявить процедуры, вызовов которой в системе не существует, было бы понятно. Что это за система такая, которой можно ампутировать объект, а ей хоть бы что? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2013, 09:07 |
|
проверка, какие процедуры устарели
|
|||
---|---|---|---|
#18+
iapЧто это за система такая, которой можно ампутировать объект, а ей хоть бы что?Отказоустойчивая :-) Ivanich87Господа, неужели sql2005 нет стандартных процедур по статистике запуска ХП??Ну что такого, в дельфи тоже стандартно у скомпилированного приложения нет статистики вызовов функций. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2013, 09:45 |
|
проверка, какие процедуры устарели
|
|||
---|---|---|---|
#18+
Ivanich87неужели sql2005 нет стандартных процедур по статистике запуска ХП?? Не надо путать статистику с аудитом. Если вы не озаботились включением аудита, то сервер за вас это делать не будет ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2013, 10:09 |
|
проверка, какие процедуры устарели
|
|||
---|---|---|---|
#18+
Ivanich87 Чтобы вести журнал нужно добавить в каждую хп что то типа: Как это сделать? alter procedure ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2013, 10:22 |
|
проверка, какие процедуры устарели
|
|||
---|---|---|---|
#18+
iapНе понимаю, почему надо дропать процедуру, если её давно не вызывали? Где логика? Если бы надо было выявить процедуры, вызовов которой в системе не существует, было бы понятно. Что это за система такая, которой можно ампутировать объект, а ей хоть бы что? Это нормальная ситуация, когда старые процедуры заменяются новыми, структура БД тоже со временем изменяется. Таким образом постепенно накапливается мусор, от которого хотелось бы избавиться, но необходимо подстраховаться. Вот поэтому и нужна статистика, какие процедуры не запускались за последние полгода - год ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2013, 10:57 |
|
проверка, какие процедуры устарели
|
|||
---|---|---|---|
#18+
Ivanich87Это нормальная ситуация, когда старые процедуры заменяются новыми, структура БД тоже со временем изменяется В нормальной ситуации процесс, "когда старые процедуры заменяются новыми" должен приводить к Decommissioning старых процедур. И делается это не на основании статистики использования, а на основании документации ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2013, 11:03 |
|
проверка, какие процедуры устарели
|
|||
---|---|---|---|
#18+
Ivanich87iapНе понимаю, почему надо дропать процедуру, если её давно не вызывали? Где логика? Если бы надо было выявить процедуры, вызовов которой в системе не существует, было бы понятно. Что это за система такая, которой можно ампутировать объект, а ей хоть бы что? Это нормальная ситуация, когда старые процедуры заменяются новыми, структура БД тоже со временем изменяется. Таким образом постепенно накапливается мусор, от которого хотелось бы избавиться, но необходимо подстраховаться. Вот поэтому и нужна статистика, какие процедуры не запускались за последние полгода - год Нормальная она только тогда, когда при создании новых одновременно удаляются старые. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2013, 11:40 |
|
проверка, какие процедуры устарели
|
|||
---|---|---|---|
#18+
WarAntНормальная она только тогда, когда при создании новых одновременно удаляются старые. Старые нельзя удалять в одночасье, так как вызов старой процедуры может производиться из интерфейса программы, а пользователей много, и у всех перезапустить программу для обновления невозможно... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2013, 11:48 |
|
проверка, какие процедуры устарели
|
|||
---|---|---|---|
#18+
Ivanich87Старые нельзя удалять в одночасье, так как вызов старой процедуры может производиться из интерфейса программы, А что тогда делает то процесс "когда старые процедуры заменяются новыми" ? Ivanich87а пользователей много, и у всех перезапустить программу для обновления невозможно... Поэтому надо удалить "старую процедуру", а не обновить клиентскую программу? Пусть даже "вызов старой процедуры может производиться из интерфейса программы" ? Круто ! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2013, 11:51 |
|
проверка, какие процедуры устарели
|
|||
---|---|---|---|
#18+
Ivanich87WarAntНормальная она только тогда, когда при создании новых одновременно удаляются старые. Старые нельзя удалять в одночасье, так как вызов старой процедуры может производиться из интерфейса программы, а пользователей много, и у всех перезапустить программу для обновления невозможно...Принципиально вы всё делаете правильно, так и надо. Но нужна более чёткая организация. Должна быть привязка версий программы к используемым процедурам, и правила, когда спользование старой версии не допускается (а то ведь полгода не-использования не означает, что кто то не может запустить старую версию программы и получить баг). Действительно, можно по простому сделать - логировать использование процедур и удалять неиспользуемые долго, но тогда логирование вам нужно сделать самому, в сиквеле (так же как в дельфи) не предусмотрено ведение лога вызовов процедур. GloryIvanich87Это нормальная ситуация, когда старые процедуры заменяются новыми, структура БД тоже со временем изменяется В нормальной ситуации процесс, "когда старые процедуры заменяются новыми" должен приводить к Decommissioning старых процедур. И делается это не на основании статистики использования, а на основании документацииЭто технически и организационно требует очень много ресурсов, хотя конечно теоретически так правильно. Для обычного заводика/торговой фирмочки на сотню рабочих мест это слишком круто, придётся к 3-м имеющимся сотрудникам на разработке взять ещё троих. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2013, 12:04 |
|
проверка, какие процедуры устарели
|
|||
---|---|---|---|
#18+
alexeyvgGloryпропущено... В нормальной ситуации процесс, "когда старые процедуры заменяются новыми" должен приводить к Decommissioning старых процедур. И делается это не на основании статистики использования, а на основании документацииЭто технически и организационно требует очень много ресурсов, хотя конечно теоретически так правильно. Для обычного заводика/торговой фирмочки на сотню рабочих мест это слишком круто, придётся к 3-м имеющимся сотрудникам на разработке взять ещё троих. Если вы хотите создать с 0-ля свое ПО для совместной разработки программного кода, то придется в взять не 3, а 33 сотрудника. А вот если взять уже созданное ПО, то можно никого дополнительно не брать. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2013, 12:09 |
|
проверка, какие процедуры устарели
|
|||
---|---|---|---|
#18+
GloryalexeyvgЭто технически и организационно требует очень много ресурсов, хотя конечно теоретически так правильно. Для обычного заводика/торговой фирмочки на сотню рабочих мест это слишком круто, придётся к 3-м имеющимся сотрудникам на разработке взять ещё троих. Если вы хотите создать с 0-ля свое ПО для совместной разработки программного кода, то придется в взять не 3, а 33 сотрудника. А вот если взять уже созданное ПО, то можно никого дополнительно не брать.В смысле, не понял, про какое ПО идёт речь? Или вы имеете в виду, что существует ПО для организации процесса разработки, которое всё это делает само, там предусмотрены разные настраиваемые шаблоны для описания своего варианта требований к поддержке ваерсий и их реализация? Я честно говоря про такое не слышал, было бы интересно узнать... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2013, 12:17 |
|
проверка, какие процедуры устарели
|
|||
---|---|---|---|
#18+
alexeyvgИли вы имеете в виду, что существует ПО для организации процесса разработки, которое всё это делает само, там предусмотрены разные настраиваемые шаблоны для описания своего варианта требований к поддержке ваерсий и их реализация? ПО, которое готовит билд к инсталяции, есть. Билд может в себя включать и декомиссию объектов. Самой примитивной реализацие декомиссии может быть простое удаление объекта. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2013, 12:20 |
|
проверка, какие процедуры устарели
|
|||
---|---|---|---|
#18+
Ivanich87, Включить трассировку события "Performance Statistics", фильтровать по EventSubClass=1 и ObjectType=8272, смотреть колонки DatabaseID и ObjectID -- это покажет все процедуры которые компилились, а значит, хоть раз выполнялись на сервере. Включить трассировку события Object:Deleted (или смотреть в трассировке по умолчанию), фильтровать по EventSubClass=1, смотреть DatabaseID и ObjectID -- это покажет когда ID объекта потерял актуальность, т.е. позволит отфильтровывать удалённые объекты. И анализировать... анализировать... анализировать... А потом в процедуры, которые таким образом в морг определились, вставить вызов sys.sp_trace_generateevent вставить в TextData что-нить типа Код: xml 1.
и трассировать это событие, а дальше сам догадаесся. :) PS: sys.sp_trace_generateevent полезно вставить во начале всех процедурок. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2013, 12:24 |
|
проверка, какие процедуры устарели
|
|||
---|---|---|---|
#18+
GloryalexeyvgИли вы имеете в виду, что существует ПО для организации процесса разработки, которое всё это делает само, там предусмотрены разные настраиваемые шаблоны для описания своего варианта требований к поддержке ваерсий и их реализация? ПО, которое готовит билд к инсталяции, есть. Билд может в себя включать и декомиссию объектов. Самой примитивной реализацие декомиссии может быть простое удаление объекта.Ну это понятно, но вариант "процедура, не используемая в новой версии, немедленно удаляется" естественно не рассматривается. Это уж для совсем "наколенных" продуктов. Требования к процессу у ТС такие (могу уверенно предполагать, потому что лет 20 придерживаюсь таких же принципов, ТС может только уточнить какие то количественные параметры): - Раз в неделю выпускается повая версия ПО, с изменениями в клиентской и серверной части - В новой версии может добавляться использование каких то новых таблиц, процедур, а использование чего то другого убираться... - Старые версии клиента обязаны работать с новой версией БД (или сервера приложений, если такая архитектура) в рамках старой функциональности. - Через какое то время (например, через полгода) старые версии клиента перестают работать на новой базе. Соответственно, старые процедуры нужно убирать, когда становится невалидным последний клиент, которых их использовал. Совершенно нормальный, удобный для бизнеса, подход. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2013, 13:11 |
|
проверка, какие процедуры устарели
|
|||
---|---|---|---|
#18+
alexeyvgНу это понятно, но вариант "процедура, не используемая в новой версии, немедленно удаляется" Я говорил декомиссия. А удаление как самый примитивный способ декомиссии. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2013, 13:14 |
|
проверка, какие процедуры устарели
|
|||
---|---|---|---|
#18+
Не совсем понятно зачем постоянно новые процедуры делают люди, а не меняют существующие. На выход процедура может давать набор данных. Подхватить и правильно обработать изменившийся набор данных на клиенте - совсем не сложно. Динамический интерфейс это просто. А на вход процедура принимает некоторое кол-во параметров, ну и можно же продумать стандартный набор входных параметров "с запасом" чтобы он перекрыл будущие потребности развития. Таким образом, необходимость создания новой процедуры - будет исключительно редким случаем. Да и клиента мякго рестартануть на обновление тоже не сложно. Заминка в работе на пару секунд - и работает дальше с того же места. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2013, 13:42 |
|
проверка, какие процедуры устарели
|
|||
---|---|---|---|
#18+
ART-CODEТаким образом, необходимость создания новой процедуры - будет исключительно редким случаем.Вы всё правильно говорите, именно так и надо делать. Но всё таки случаи удаления процедур неизбежно будут, пусть и очень редко, их тоже нужно отрабатывать. GloryalexeyvgНу это понятно, но вариант "процедура, не используемая в новой версии, немедленно удаляется" Я говорил декомиссия. А удаление как самый примитивный способ декомиссии.А, в этом смысле... А то слово мудрёное :-) Так вот, я не вижу средств, например, в используемой мной Visual Studio-TFS для "не примитивной декомиссии" в соответствии с описанными выше требованиями. Т.е. что бы связывать хранимую процедуру с местами в клиенте, где она используется, и отмечать как неиспользуемую через некоторое время. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2013, 13:51 |
|
|
start [/forum/topic.php?fid=46&tid=1704225]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
61ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 182ms |
0 / 0 |