Хранимые процедуры в базе = загадка
Модераторы: m0p3e, edward_K, Модераторы
-
- Местный житель
- Сообщения: 222
- Зарегистрирован: 04 июн 2008, 14:35
- Откуда: Стерлитамак
- Контактная информация:
Хранимые процедуры в базе = загадка
Давно хотел спросить: в чем тайный смысл хранимок в mssql-ой базе Галки? Их там просто неимоверное количество. Имена не поддаются объяснению: DT0000000000000000000000000005 и т.д. и т.п. И как я понял практически внутри всех "тупо" select-ы живут. Зачем они?
p.s. отсутствию комментариев в объектах БД не удивляюсь уже
p.s. отсутствию комментариев в объектах БД не удивляюсь уже
Есть и другая сторона у этих хранимок. После изменения выборки в существующем интерфейсе данные показывает от фонаря. Долго бился... Уже почти поверил, что с ума сошел... Потом посморел в лог драйвера MSSQL-ого, а там ругань на DT...кучацифров. После удаления все заработало. Повторялось подобное еще 3-4 раза.
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Грохнуть то можно.
select 'drop procedure '+name from sysobjects where xtype = 'P' and name like '__0___________________________'
union
select 'delete from xx$hashvalues'
Только они все равно потом пересоздадуться в процессе работы эти самые динамические хранимки. Плодит их нап в процессе работы. Но толком помоему так никто и не знает есть ли смысл их периодически очищать или нет )
select 'drop procedure '+name from sysobjects where xtype = 'P' and name like '__0___________________________'
union
select 'delete from xx$hashvalues'
Только они все равно потом пересоздадуться в процессе работы эти самые динамические хранимки. Плодит их нап в процессе работы. Но толком помоему так никто и не знает есть ли смысл их периодически очищать или нет )
Недавно на тестовой убивал г. ХП с помощью запроса присланного из ТП. Проверял одну версию. Г. потом нормально работала.
Код: Выделить всё
declare @procedures CURSOR
set @procedures = CURSOR FOR
select name from sysobjects
where substring(name,1,3) in ('DT0','EQ0', 'FT0', 'GE0', 'GR0', 'LE0', 'LS0', 'LT0', 'ML0', 'NT0', 'PS0', 'RE0')
order by name
declare @proc varchar(30)
OPEN @procedures
FETCH NEXT FROM @procedures INTO @proc
WHILE (@@FETCH_STATUS <> -1)
BEGIN
print 'drop procedure ' + @proc
EXEC ('drop procedure ' + @proc)
FETCH NEXT FROM @procedures INTO @proc
END
DEALLOCATE @procedures
Нет, процедуры тут ни при чем - элементарное отсутствие повторного парсинга, и кэширование плана исполнения. Это всё делается самим сервером.Алексей писал(а):ИМХО заметил такую вещь, по крайней мере на MSSQL
Пишу новый интерфейс, подключаего его к БД и при первом его запуске логическая таблица бывает долго строится.
При повторных запусках ускорение существенное.
Возможно причина кроется как раз в этих хранимых процедурах?
Ради интереса на экспериментальной базе попробовали удалить все эти странные ХП. Получилось, галка осталась работоспособной, однако эти процедуры, действительно, на глазах генерируются снова.
Пришли к выводу, что проще свои ХП хранить в отдельной схеме с последующим доступом по полному идентификатору.
Пришли к выводу, что проще свои ХП хранить в отдельной схеме с последующим доступом по полному идентификатору.
Почему нельзя то? Например, в инструкции по переносу БД на другой сервер это гроханье является штатным условием.LaaLaa писал(а):Нельзя их грохать. Галактика после этого не будет работать..
Цитирую:
12) Удалить в Enterprise Manager все динамические хранимые процедуры восстановленной базы данных (Stored Procedures) с префиксами:
DT, EQ, FT, GE, GR, LE, LS, LT, ML, NT, PS, RE
Скрипт для удаления хранимых процедур может быть получен путем выполнения в восстановленной базе данных запроса:
select 'drop procedure '+name from sysobjects where xtype = 'P' and name like '__0___________________________'
sim
Да я просто хотел удалить их для более удобной работы с деревом ХП, т.к. мы в процессе эксплуатации "Галактики" (пока еще тестовой) пришли к выводу что некоторые типы отчетов, быстрее и много удобнее получать самописным приложением с использованием ХП.
А смысл удаления этого мусора получается не большой, ибо через пару часов работы там все становится на свои места
Да я просто хотел удалить их для более удобной работы с деревом ХП, т.к. мы в процессе эксплуатации "Галактики" (пока еще тестовой) пришли к выводу что некоторые типы отчетов, быстрее и много удобнее получать самописным приложением с использованием ХП.
А смысл удаления этого мусора получается не большой, ибо через пару часов работы там все становится на свои места