Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4 5 6   вперед  Ctrl      все
 Долгая выборка из INSERTED\DELETED во временную таблицу  [new]
АцкийСкотона
Member

Откуда: Чебоксары
Сообщений: 56
Добрый день, товарищи!
Столкнулся с проблемой долгой выборки из дрянотаблиц INSERTED\DELETED в [таблицу\временную_таблицу\табличную_переменную].

Конкретнее. Имеем два стейтмента.

SELECT "ПОЛЕ" INTO #T_INSERTED FROM INSERTED
и
SELECT "ПОЛЕ" INTO #T_INSERTED FROM "Таблица_на_которой_стоит_триггер"

В таблице 350000 записей. Проводится апдейт всех записей по некому полю, думаю не важно по какому.
Результат: 45сек и 0,5 сек. Притом результат один и тотже что выбирать ВСЕ столбцы, что один какой либо. Даже если написать
SELECT 1 INTO #T_INSERTED FROM INSERTED
, то всеравно будет тарабанить 45 сек.

Кто сталкивался? Есть вообще идеи почему к обращению к INSERTED\DELETED идет так долго?
з.ы. SELECT 1 FROM INSERTED тоже тарабанит 45 сек. Вообще без разницы что пытаешься сделать- время всегда одно и тоже. Ну за исключением попытки фильтрации и сортировки оных псевдотейблов.
21 окт 14, 10:47    [16734928]     Ответить | Цитировать Сообщить модератору
 Re: Долгая выборка из INSERTED\DELETED во временную таблицу  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
АцкийСкотона,

это для выполнения DSQL в триггере?
Или для выполнения процедуры, обрабатывающей inserted/deleted?

В других случаях не могу представить, зачем копировать эти псевдотаблицы во временные
21 окт 14, 10:56    [16735010]     Ответить | Цитировать Сообщить модератору
 Re: Долгая выборка из INSERTED\DELETED во временную таблицу  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
И какие ожидания у сессии во время этих 45 секунд?
21 окт 14, 11:01    [16735044]     Ответить | Цитировать Сообщить модератору
 Re: Долгая выборка из INSERTED\DELETED во временную таблицу  [new]
АцкийСкотона
Member

Откуда: Чебоксары
Сообщений: 56
Да, мне надо их потом, асинхронно обработать. Для логирования вобщем надо. :)
21 окт 14, 11:01    [16735045]     Ответить | Цитировать Сообщить модератору
 Re: Долгая выборка из INSERTED\DELETED во временную таблицу  [new]
АцкийСкотона
Member

Откуда: Чебоксары
Сообщений: 56
pkarklin,

Никаких. Нулл в типе ожидания.
21 окт 14, 11:02    [16735054]     Ответить | Цитировать Сообщить модератору
 Re: Долгая выборка из INSERTED\DELETED во временную таблицу  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
АцкийСкотона
pkarklin,

Никаких. Нулл в типе ожидания.


Запускайте UPDATE с включенным SET STATISTICS TIME и IO. Посмотрим, на что тратится время.
21 окт 14, 11:04    [16735071]     Ответить | Цитировать Сообщить модератору
 Re: Долгая выборка из INSERTED\DELETED во временную таблицу  [new]
msLex
Member

Откуда:
Сообщений: 8193
АцкийСкотона
pkarklin,

Никаких. Нулл в типе ожидания.

а в ресурсе?
21 окт 14, 11:05    [16735084]     Ответить | Цитировать Сообщить модератору
 Re: Долгая выборка из INSERTED\DELETED во временную таблицу  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31439
АцкийСкотона
Притом результат один и тотже что выбирать ВСЕ столбцы, что один какой либо.
Точно? А то, может, на таблице есть индекс с искомым полем, а таблица широкая...

Да, с таким не сталкивался...
21 окт 14, 11:07    [16735101]     Ответить | Цитировать Сообщить модератору
 Re: Долгая выборка из INSERTED\DELETED во временную таблицу  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Предлагаете угадать, что Вы написали в триггере?
21 окт 14, 11:11    [16735122]     Ответить | Цитировать Сообщить модератору
 Re: Долгая выборка из INSERTED\DELETED во временную таблицу  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31439
Владислав Колосов
Предлагаете угадать, что Вы написали в триггере?
А как от этого может зависеть операция "SELECT "ПОЛЕ" INTO #T_INSERTED FROM INSERTED"? Зачем эта информация нужна?
21 окт 14, 11:13    [16735133]     Ответить | Цитировать Сообщить модератору
 Re: Долгая выборка из INSERTED\DELETED во временную таблицу  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
alexeyvg
Владислав Колосов
Предлагаете угадать, что Вы написали в триггере?
А как от этого может зависеть операция "SELECT "ПОЛЕ" INTO #T_INSERTED FROM INSERTED"? Зачем эта информация нужна?
А я подозреваю, что копирование deleted/inserted вообще не нужно.
21 окт 14, 11:19    [16735172]     Ответить | Цитировать Сообщить модератору
 Re: Долгая выборка из INSERTED\DELETED во временную таблицу  [new]
АцкийСкотона
Member

Откуда: Чебоксары
Сообщений: 56
2pkarklin, для инсертеда статистика ИО не доступна. По крайней мере мне не выдает. Только по физической табличке.

2Владислав Колосов, так я написал же что там. там сейчас два запроса. Вам прямо конкретные названия моих таблиц надо? Бесполезны они вам будут. :)

2iap, я с радостью с Вам потрещу по этой теме потом. Когда Вы столкнетесь с необходимостью логирования изменений большго объема. :)
21 окт 14, 11:38    [16735308]     Ответить | Цитировать Сообщить модератору
 Re: Долгая выборка из INSERTED\DELETED во временную таблицу  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
iap, да, как-то подозрительно выглядит.
Не факт, что всё происходит так, как описывает автор.
21 окт 14, 11:38    [16735313]     Ответить | Цитировать Сообщить модератору
 Re: Долгая выборка из INSERTED\DELETED во временную таблицу  [new]
АцкийСкотона
Member

Откуда: Чебоксары
Сообщений: 56
msLex, в ресурсе тоже пусто.
21 окт 14, 11:39    [16735319]     Ответить | Цитировать Сообщить модератору
 Re: Долгая выборка из INSERTED\DELETED во временную таблицу  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
АцкийСкотона, только одна строчка в триггере?
21 окт 14, 11:39    [16735325]     Ответить | Цитировать Сообщить модератору
 Re: Долгая выборка из INSERTED\DELETED во временную таблицу  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
АцкийСкотона
2pkarklin, для инсертеда статистика ИО не доступна. По крайней мере мне не выдает. Только по физической табличке.


Ну так покажите, что Вы получили, выполняя UPDATE при установленных SETах.
21 окт 14, 11:44    [16735379]     Ответить | Цитировать Сообщить модератору
 Re: Долгая выборка из INSERTED\DELETED во временную таблицу  [new]
АцкийСкотона
Member

Откуда: Чебоксары
Сообщений: 56
2Владислав Колосов, товарищ, давайте вы найдете где-нибудь у себя в закромах табличку с 300000+ записей и с порядка 70 полями. Запустите апдейт какого-либо поля по всем записям, в триггере напишете SELECT 1 FROM INSERTED, заключив этот запрос в SELECT GETUTCDATE(). И только потом будете утверждать что я что то тут выдумываю. Договорились? ;)
21 окт 14, 11:45    [16735386]     Ответить | Цитировать Сообщить модератору
 Re: Долгая выборка из INSERTED\DELETED во временную таблицу  [new]
АцкийСкотона
Member

Откуда: Чебоксары
Сообщений: 56
pkarklin, "Table 'FD_Charge_Details'. Scan count 566, logical reads 8981, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0."

Владислав, Остальное в тирггере не выполняется. После обозначенных запросов ретурн поставл я.
21 окт 14, 11:47    [16735413]     Ответить | Цитировать Сообщить модератору
 Re: Долгая выборка из INSERTED\DELETED во временную таблицу  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
АцкийСкотона
Когда Вы столкнетесь с необходимостью логирования изменений большго объема. :)
Ой, и правда! Что же я все эти 17 лет делал-то?!
Ни разу не логировал такие серьёзные таблицы!
21 окт 14, 11:49    [16735430]     Ответить | Цитировать Сообщить модератору
 Re: Долгая выборка из INSERTED\DELETED во временную таблицу  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
АцкийСкотона
заключив этот запрос в SELECT GETUTCDATE().
Это как?
21 окт 14, 11:50    [16735440]     Ответить | Цитировать Сообщить модератору
 Re: Долгая выборка из INSERTED\DELETED во временную таблицу  [new]
АцкийСкотона
Member

Откуда: Чебоксары
Сообщений: 56
iap, таки у вас есть способ решить проблему с которой я столкнулся или нет? :) давайте по существу пожалуйста. :)
21 окт 14, 11:50    [16735444]     Ответить | Цитировать Сообщить модератору
 Re: Долгая выборка из INSERTED\DELETED во временную таблицу  [new]
АцкийСкотона
Member

Откуда: Чебоксары
Сообщений: 56
iap, это вот таг. :)
21 окт 14, 11:52    [16735462]     Ответить | Цитировать Сообщить модератору
 Re: Долгая выборка из INSERTED\DELETED во временную таблицу  [new]
АцкийСкотона
Member

Откуда: Чебоксары
Сообщений: 56
iap, пардон. рука на контролэнтер дрогнула. :)

SET STATISTICS IO ON
SET STATISTICS TIME ON
SELECT GETUTCDATE(), 'START'


SELECT F_Division, LINK INTO #T_INSERTED FROM INSERTED
SELECT GETUTCDATE(), 'INSERTED'



SELECT * INTO #T_INSERTED2 FROM PE.FD_Charge_Details
SELECT GETUTCDATE(), 'FD_Charge_Details'


SET STATISTICS TIME OFF
SET STATISTICS IO OFF
21 окт 14, 11:53    [16735473]     Ответить | Цитировать Сообщить модератору
 Re: Долгая выборка из INSERTED\DELETED во временную таблицу  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
АцкийСкотона
pkarklin, "Table 'FD_Charge_Details'. Scan count 566, logical reads 8981, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0."

Владислав, Остальное в тирггере не выполняется. После обозначенных запросов ретурн поставл я.


А статистика TIME? Если триггера нет, что будет со статистикой?
21 окт 14, 11:53    [16735481]     Ответить | Цитировать Сообщить модератору
 Re: Долгая выборка из INSERTED\DELETED во временную таблицу  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
АцкийСкотона,

SET установите в баче, который запускает UPDATE, а не в триггере.
21 окт 14, 11:55    [16735492]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4 5 6   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить