Хранимые процедуры в базе = загадка

Администрирование баз данных (Pervasive.SQL, MS SQL, Oracle, утилита Support)

Модераторы: m0p3e, edward_K, Модераторы

ilshat
Местный житель
Сообщения: 222
Зарегистрирован: 04 июн 2008, 14:35
Откуда: Стерлитамак
Контактная информация:

Хранимые процедуры в базе = загадка

Сообщение ilshat »

Давно хотел спросить: в чем тайный смысл хранимок в mssql-ой базе Галки? Их там просто неимоверное количество. Имена не поддаются объяснению: DT0000000000000000000000000005 и т.д. и т.п. И как я понял практически внутри всех "тупо" select-ы живут. Зачем они?

p.s. отсутствию комментариев в объектах БД не удивляюсь уже :(
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

ИМХО заметил такую вещь, по крайней мере на MSSQL
Пишу новый интерфейс, подключаего его к БД и при первом его запуске логическая таблица бывает долго строится.
При повторных запусках ускорение существенное.
Возможно причина кроется как раз в этих хранимых процедурах?
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение m0p3e »

Есть и другая сторона у этих хранимок. После изменения выборки в существующем интерфейсе данные показывает от фонаря. Долго бился... Уже почти поверил, что с ума сошел... Потом посморел в лог драйвера MSSQL-ого, а там ругань на DT...кучацифров. После удаления все заработало. Повторялось подобное еще 3-4 раза.
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

хм. это надо разработчикам, чтобы поправили, т.к. это серьёзный косяк!
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

Алексей
это для вас косяк, для разработчиков это мегафича
ilshat
Местный житель
Сообщения: 222
Зарегистрирован: 04 июн 2008, 14:35
Откуда: Стерлитамак
Контактная информация:

Сообщение ilshat »

Так в чем же смысл этой МЕГА-фичи? Выборки оптимизированные под интерфейсы что ли?
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

ilshat
да шучу я, без понятия в чем там смысл. Просто пообщавшись с ТП и разработчиками сделал заключение - все баги могут быть легко перекованы в фичи
SNET
Посетитель
Сообщения: 32
Зарегистрирован: 06 июл 2009, 19:01

Сообщение SNET »

Присоединяюсь к вопросу, насколько безболезненно можно грохнуть весь этот бардак при использовании 2005 MS SQL? Ибо ждать 15-20 минут открытия дерева с ХП сильно утомляет.
LaaLaa

Сообщение LaaLaa »

Нельзя их грохать. Галактика после этого не будет работать.

Таким образом пытались когда то давно оптимизировать компиляцию запросов для древних версий MS SQL Server. Для текущих версий MS SQL Server есть конечно другие способы. Не тем не менее, пока еще в Галктике эти хранимки все еще нужны.
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

Грохнуть то можно.

select 'drop procedure '+name from sysobjects where xtype = 'P' and name like '__0___________________________'
union
select 'delete from xx$hashvalues'


Только они все равно потом пересоздадуться в процессе работы эти самые динамические хранимки. Плодит их нап в процессе работы. Но толком помоему так никто и не знает есть ли смысл их периодически очищать или нет )
Polimer
Местный житель
Сообщения: 489
Зарегистрирован: 27 янв 2006, 12:46
Откуда: Москва

Сообщение Polimer »

Недавно на тестовой убивал г. ХП с помощью запроса присланного из ТП. Проверял одну версию. Г. потом нормально работала.

Код: Выделить всё

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 
SNET
Посетитель
Сообщения: 32
Зарегистрирован: 06 июл 2009, 19:01

Сообщение SNET »

Алексей писал(а):ИМХО заметил такую вещь, по крайней мере на MSSQL
Пишу новый интерфейс, подключаего его к БД и при первом его запуске логическая таблица бывает долго строится.
При повторных запусках ускорение существенное.
Возможно причина кроется как раз в этих хранимых процедурах?
Нет, процедуры тут ни при чем - элементарное отсутствие повторного парсинга, и кэширование плана исполнения. Это всё делается самим сервером.
SNET
Посетитель
Сообщения: 32
Зарегистрирован: 06 июл 2009, 19:01

Сообщение SNET »

Ради интереса на экспериментальной базе попробовали удалить все эти странные ХП. Получилось, галка осталась работоспособной, однако эти процедуры, действительно, на глазах генерируются снова.
Пришли к выводу, что проще свои ХП хранить в отдельной схеме с последующим доступом по полному идентификатору.
:sad:
sim
Местный житель
Сообщения: 1805
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Россия

Сообщение sim »

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___________________________'
SNET
Посетитель
Сообщения: 32
Зарегистрирован: 06 июл 2009, 19:01

Сообщение SNET »

sim
Да я просто хотел удалить их для более удобной работы с деревом ХП, т.к. мы в процессе эксплуатации "Галактики" (пока еще тестовой) пришли к выводу что некоторые типы отчетов, быстрее и много удобнее получать самописным приложением с использованием ХП.
А смысл удаления этого мусора получается не большой, ибо через пару часов работы там все становится на свои места :)
Ответить