Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Mike_za Member Откуда: Москва Сообщений: 1176 |
Как я понимаю, это те самые таблички в темпдб с цифровыми именами. А можно узнать, какие были исходные имена и для кого эти таблички кешились? |
||
13 дек 15, 02:20 [18553076] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37155 |
Летят два крокодила, один зеленый, другой на север. ВОПРОС: какие были исходные имена и для кого эти таблички кешились? |
13 дек 15, 03:21 [18553184] Ответить | Цитировать Сообщить модератору |
Mike_za Member Откуда: Москва Сообщений: 1176 |
Гавриленко Сергей Алексеевич, Имя процедуры, для которой закешелась времянка |
13 дек 15, 13:54 [18553815] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31783 |
По моему, узнать невозможно, только пытаться определить, какому коннекту она принадлежит (вроде тут были какие то способы, поищите), и анализировать вручную трейс (предварительно настроенный) для этого коннекта. |
||
13 дек 15, 14:12 [18553865] Ответить | Цитировать Сообщить модератору |
Mike_za Member Откуда: Москва Сообщений: 1176 |
alexeyvg, Разве этот кеш завязан на коннект? Как я понял, эти времянки принадлежат плану |
13 дек 15, 15:39 [18554002] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
конечно не на коннект. если в одной и той же сессии сперва вызвать процедуру с текущими параметрами, а потом поменять, допустим, язык, и снова вызвать, будет создан новый план и новые объекты уйдут в кэш. с другой стороны, если вызвать одну и ту же процедуру одновременно из разных сессий, можно получить столько "комплектов" объектов, сколько и сессий, потому что даже не на "план" кэшируется, а на execution context derived from that cached plan.
терминология и объяснение вот тут: Temporary Table Caching Explained я думаю, alexeyvg не о кэшируемых объектах писал, а про обычные временные таблицы. т.е. не про первое вот отсюда, а про второе: The cached objects themselves are visible in tempdb.sys.tables, named with a single # character followed by the 8-character hexadecimal representation of the object id. (1) This is different from the names of ordinary temporary tables, which have the user-supplied name followed by a bunch of underscores and an id. (2) |
||||
13 дек 15, 19:20 [18554533] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31783 |
|
||
13 дек 15, 23:13 [18555210] Ответить | Цитировать Сообщить модератору |
Mike_za Member Откуда: Москва Сообщений: 1176 |
o-o, Спасибо, уже трети раз читаю жту статью и вновь подчеркиваю новое))
Как я понял, для временных таблиц по логу можно выцепить их имена)) Для табличных переменных уже будет сложнее) |
||
13 дек 15, 23:24 [18555252] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
вы про созданные темповые таблицы, умирающие вместе с процедурой (данные оттуда померли. нет их). а про Mike_za то, что попадает в кэш (после выполнения процедуры 2 страницы таблицы [IAM + data page] ушли к кэш):
он кэширование называет кэшированием, все у него нормально с терминологией. еще раз:
вы про (2), Mike_za про (1) ------------ т.е. какая нам разница, какой коннект первым вызвал эту процедуру? Mike_za наверное хочет истребить определенные закэшированные объекты, и создавшей их сессии давно нет, а объекты все висят. а вот найти соответствующую процедуру, сделать ей ALTER, вот заодно и все эти объекты прибьются. их же может быть 10.000 на 1 процедуру, если в процедуре 10 времянок и ее умудрились одновременно 1000 раз запустить (там в блоге Paul White как раз описывает, как он 2000 штук получил) |
||||||||
14 дек 15, 00:26 [18555364] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |