Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Какие конструкции могут влиять на заполнение всего доступного объёма MemToLeave?  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6201
Возникла такая ситуация. Имеется некая процедура, предназначенная для преобразования данных из одной таблицы и их записи в другую таблицу. Примерный объем данных на входе ~1 млн. записей, на выходе ~5000 записей. Код процедуры достаточно пугающ - сплошные курсорные циклы, записи в промежуточные временные таблицы, извлечение их оттуда, снова объявления курсоров на основе запросов в две страницы текста, снова циклы, и т.д. Работает всё это хозяйство раз в сутки, время отработки - порядка 12 часов. Т.к. мне это процедура досталась по наследству, и вроде бы работала, я не стал её трогать и переписывать. Но сейчас наши администраторы утверждают, что сессия, в которой работает процедура, отжирает практически 99,99% процентов имеющейся у сервера MemToLeave, причем занятый объем MemToLeave не высвобождается даже после убивания этой сессии, и им (администраторам) приходится перезагружать сервер.
Собственно, вопрос данной темы - что именно может влиять на такое поведение сессии касательно MemToLeave? Раз уж пришлось заниматься этой процедурой - я её перепишу (в первую очередь выкинув курсоры), но хотелось бы знать, чего не надо допускать, чтобы мой вариант не повторил поведение предшественника. Вот тут нашел следующее:
This is a special contiguous memory area that is separate completely from the Bpool, and is for use by external consumers such as Extended Procedures, COM objects (OLE Automation calls), Linked Servers, OLEDB providers, SQL CLR, and is also used for allocations larger than 8KB (>8KB), also known as multi-page allocations, by the database engine (extemely large and complex query plans).

- в моем случае никаких вызовов расширенных процедур, работы с OLE/CLR, и обращений к линкед серверам нет. Значит, остаются вот эти extemely large and complex query plans? И как тогда оценить, насколько будет extemely large and complex в плане планов запросов то, что придет на замену?
27 фев 12, 11:16    [12155443]     Ответить | Цитировать Сообщить модератору
 Re: Какие конструкции могут влиять на заполнение всего доступного объёма MemToLeave?  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6201
Да, забыл:
Microsoft SQL Server 2005 - 9.00.5057.00 (Intel X86) Mar 25 2011 13:50:04 Copyright (c) 1988-2005 Microsoft Corporation Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2) .
27 фев 12, 11:18    [12155457]     Ответить | Цитировать Сообщить модератору
 Re: Какие конструкции могут влиять на заполнение всего доступного объёма MemToLeave?  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
Сон Веры Павловны,

избавьтесь от курсоров и половина проблем сразу уйдет.
а еще вопрос к вашим админам чем им мешает сервер взявший столько помяти сколько ему разрешили взять?
27 фев 12, 11:25    [12155510]     Ответить | Цитировать Сообщить модератору
 Re: Какие конструкции могут влиять на заполнение всего доступного объёма MemToLeave?  [new]
любитель memtoleave
Guest
А админы ваши смогут показать, как они определили, что "сессия, в которой работает процедура, отжирает практически 99,99% процентов имеющейся у сервера MemToLeave"?
27 фев 12, 16:23    [12158306]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить