Вобщем проблема такая. При постоянной работе SQL сервер впадает в тормознутое состояние, т.е. начинает гораздо медленнее работать. Мониторинг показывает резко возросшую занятость ресурсов памяти,хотя до предельных значений еще очень далеко.Приходиться примерно раз в месяц перегружать сервер, а это как то нехорошо( Теперь подробнее о причинах: есть такое понятие - временная таблица. Её можно создать и можно явно уничтожить командой drop. При явном уничтожении ресурсы освобождаются полностью. Но ситуация такая. Команды create table и drop table нельзя использовать в триггерах. Но вышло так что возникла необходимость создать временную таблицу из триггера, и хотя явное создание запрещено, но insert into создает её без проблем, но явное удаление всё равно запрещено. По заявлениям дяди Билла временная таблица освобождается автоматически как только она покидает область видимости, но мне кажется , что это не совсем так, потому что занятосять ресурсов растет полько при использовании этого триггера , а он используется дней 5 в месяц после чего сервер приходиться перегружать. Отказаться от использования временной таблы ( или замены её на постоянную) в этом триггере никак нельзя, потому что во первых имеет место рекурсивный вызов триггера и естественно вложенная неявная транзакция и к тому же одновременное обрещение нескольких юзеров. Ну вот и всё.Возможно я не прав в своих суждениях и поэтому хотелось бы выслушать мнение других специалистов по этому вопросу. Заранее благодарен...
ЗЫ : только не предлагайте купить новый сервер , этот еще не так сильно устарел (HP lh6000 6*intel PIII Xeon 700,RAM 4Gb, SCSI RAID ну и т.д.) |