powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Долгая выборка из INSERTED\DELETED во временную таблицу
25 сообщений из 138, страница 5 из 6
Долгая выборка из INSERTED\DELETED во временную таблицу
    #38782991
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ART-CODEВозможно, COLUMNS_UPDATED естьТо же самое.
Смысл имеет лишь сравнение соответствующих записей deleted и inserted.
Если записей более одной, то это возможно только при наличии полей,
однозначно связывающих deleted и inserted и неизменившихся в результате данного UPDATE.
...
Рейтинг: 0 / 0
Долгая выборка из INSERTED\DELETED во временную таблицу
    #38783012
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АцкийСкотона,

триггер такой:
Код: sql
1.
2.
3.
create trigger tr1t on temp.cust for update
as
select getutcdate() dd,* into #inserted from inserted 



Таблица:
int no 4
varchar no 200
int no 4
int no 4
varchar no 80
varchar no 80
varchar no 12
varchar no 12
varchar no 250
varchar no 60
varchar no 60
varchar no 60
varchar no 50
varchar no 15
date no 3
varchar no 120
date no 3
varchar no 120
varchar no 20
varchar no 20
varchar no 60
varchar no 60
varchar no 60
varchar no 15
varchar no 120
smallint no 2
tinyint no 1

подозреваю, что производительности Вашей tempdb маловато для таких операций.
...
Рейтинг: 0 / 0
Долгая выборка из INSERTED\DELETED во временную таблицу
    #38783033
SomewhereSomehow, На сервере ничего не происходит. По крайней мере в момент моей активности.

Смотрел посредством скрипта.

SELECT
s.login_name, r.status, d.name as DB_Name, /*o.schema_id*/sch.name, o.name AS ObjName,
substring(qt.text,(r.statement_start_offset/2) +1,
(CASE WHEN r.statement_end_offset = -1 THEN len(CONVERT(nvarchar(MAX), qt.text)) * 2 ELSE r.statement_end_offset END -r.statement_start_offset)/2)
AS stmt_executing,
r.session_id, r.blocking_session_id, r.wait_type, r.wait_time, r.wait_resource, r.row_count,
r.reads AS P_reads, r.logical_reads as L_Reads, r.writes, r.total_elapsed_time, r.estimated_completion_time, r.percent_complete
-- MISC
, d.database_id
FROM sys.dm_exec_requests r
INNER JOIN sys.dm_exec_sessions s
ON r.session_id = s.session_id
INNER JOIN sys.databases d
on r.database_id = d.database_id
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS qt
LEFT JOIN sys.objects o
ON /*d.database_id = o.
AND*/ qt.objectid = o.object_id
INNER JOIN sys.schemas sch
ON o.schema_id = sch.schema_id

WHERE r.session_id <> @@SPID
AND ISNULL(r.wait_type, '') <> 'TRACEWRITE'
ORDER BY
d.name ASC, s.session_id ASC, r.wait_resource DESC


Я не знаю как у вас отрабатывает быстрее. А сколько конкретно первый и второй стейтмент по времени идут?
...
Рейтинг: 0 / 0
Долгая выборка из INSERTED\DELETED во временную таблицу
    #38783041
Владислав Колосов,
Ну у меня полей поболее. Сколько ваш запрос занимает? Сделайте еще селект инто с физической таблицки на которой триггре висит. У вас есть такая же разительная разница как у меня?
Кста, основныей файлы БД и темпдб на одном диске?
...
Рейтинг: 0 / 0
Долгая выборка из INSERTED\DELETED во временную таблицу
    #38783089
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АцкийСкотона, у нас хранилище, а не диск. Добавил вставку - еще 1-2 секунды прибавилось.
...
Рейтинг: 0 / 0
Долгая выборка из INSERTED\DELETED во временную таблицу
    #38783103
Владислав КолосовАцкийСкотона, у нас хранилище, а не диск. Добавил вставку - еще 1-2 секунды прибавилось.

а можете во так у себя попробовать?
select getutcdate()
select * into #inserted from inserted
select getutcdate()
select * into #inserted2 from temp.cust
select getutcdate()

Какие результаты в секундах у первого и второго?
...
Рейтинг: 0 / 0
Долгая выборка из INSERTED\DELETED во временную таблицу
    #38783111
Фотография SomewhereSomehow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АцкийСкотона,

Быстрее только в первый раз, в дальнейшем ситуация как у вас не воспроизвелась. У вас же, как я понял, ситуация воспроизводится стабильно. Ок, вы не видите активности на сервере, но посмотрите при помощи расширенного события, чего ждет запрос?
Планы что-нибудь показывают? Например, при сканировании обычной таблицы параллельный скан , при сканировании inserted нет.

Но у меня такая разница как у вас не воспроизводится, впрочем я ничего не знаю ни о ваших данных, ни об условиях, ни о способе измерения. Как я уже говорил, либо репро, либо какая-то конкретика, чего так долго ждет запрос. А то получается, что у вас медленно, воспроизвести в простом случае это нельзя, а больше никаких данных вы не даете. Гадать можно долго, хотя, может рано или поздно кто-то угадает, но я это делать не берусь.
...
Рейтинг: 0 / 0
Долгая выборка из INSERTED\DELETED во временную таблицу
    #38783123
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АцкийСкотонаВладислав КолосовАцкийСкотона, у нас хранилище, а не диск. Добавил вставку - еще 1-2 секунды прибавилось.

а можете во так у себя попробовать?
select getutcdate()
select * into #inserted from inserted
select getutcdate()
select * into #inserted2 from temp.cust
select getutcdate()

Какие результаты в секундах у первого и второго?

Просто во временную таблицу - секунда, из inserted - около 5 секунд.
...
Рейтинг: 0 / 0
Долгая выборка из INSERTED\DELETED во временную таблицу
    #38783124
SomewhereSomehow, Ну у меня такие же планы ка у вас. Один в один наверно даже по цифрам. Тоже вся стоимость в скане инсертеда. А какие мне вам данные еще дать? Сами данные не могу, пардон, они закрытые. :)
Могу структуру таблички дать завтра. Щас сваливаю. Резину менять надо. Страшно а то по снегу на грязевой катать. :D
...
Рейтинг: 0 / 0
Долгая выборка из INSERTED\DELETED во временную таблицу
    #38783127
Владислав Колосов, а сколько строк в таблице? И какова примерная плотность заполнения полей?
...
Рейтинг: 0 / 0
Долгая выборка из INSERTED\DELETED во временную таблицу
    #38783141
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АцкийСкотона, в триггере 98% времени выполнения занимает вставку во временную таблицу, 2% скан inserted.
Тем не менее, вставка в триггере выполняется намного медленнее.
...
Рейтинг: 0 / 0
Долгая выборка из INSERTED\DELETED во временную таблицу
    #38783142
Фотография SomewhereSomehow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АцкийСкотонаА какие мне вам данные еще дать?

Репро, т.е. такой скрипт, запустив который у участников форума воспроизвелось бы описываемое поведение. Да, это муторно, нужно делать скрипты тестовых таблиц, заполнять их какими-то псевдо данными и т.д., но это лучший способ получить предметный ответ. Если репро не получается сделать, то хотя бы ожидания (в третий раз по-моему повторяю) при выполнении вашего запроса на вашем сервере.
...
Рейтинг: 0 / 0
Долгая выборка из INSERTED\DELETED во временную таблицу
    #38783146
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
500000 строк, я же писал. Размер - 77 мб.
...
Рейтинг: 0 / 0
Долгая выборка из INSERTED\DELETED во временную таблицу
    #38783227
Владислав КолосовАцкийСкотона, в триггере 98% времени выполнения занимает вставку во временную таблицу, 2% скан inserted.
Тем не менее, вставка в триггере выполняется намного медленнее.
А ничего не путаете? У меня и у SomewhereSomehow 98% именно скан инсерта, а не вставка во временную таблицу. Вот попробуйте просто селект 1 из инсертеда сделать. Ради интереса.
...
Рейтинг: 0 / 0
Долгая выборка из INSERTED\DELETED во временную таблицу
    #38783232
Владислав Колосов500000 строк, я же писал. Размер - 77 мб.
У меня триста тыщ 308 метров весят. Судя по плану. План свой показать для обоих запросов можете, если не затруднит?
...
Рейтинг: 0 / 0
Долгая выборка из INSERTED\DELETED во временную таблицу
    #38783245
SomewhereSomehowАцкийСкотонаА какие мне вам данные еще дать?

Репро, т.е. такой скрипт, запустив который у участников форума воспроизвелось бы описываемое поведение. Да, это муторно, нужно делать скрипты тестовых таблиц, заполнять их какими-то псевдо данными и т.д., но это лучший способ получить предметный ответ. Если репро не получается сделать, то хотя бы ожидания (в третий раз по-моему повторяю) при выполнении вашего запроса на вашем сервере.
Проблематично мне такой скрипт написать.
А насчёт ожиданий, так я же писал. Там промелькивает цхпакет , асинхрон Ио, но они не висят при запросе. Просто может совпало так. Я их не каждый раз вижу. Завтра хочу посмотреть план реалтайм прямо, который в момент выполнения юзать.
Может что-то в настройках инстанса? Есть идеи?
...
Рейтинг: 0 / 0
Долгая выборка из INSERTED\DELETED во временную таблицу
    #38783311
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АцкийСкотонаМожет что-то в настройках инстанса? Есть идеи?Тут обсуждение превратилось в какое то препирательство по общесиквельной тематике.

Привнесите конкретику.
Выложите результат трейса (с заходом внутрь), в виде файла трейса, для вариантов с
SELECT "ПОЛЕ" INTO #T_INSERTED FROM INSERTED
и
SELECT "ПОЛЕ" INTO #T_INSERTED FROM "Таблица_на_которой_стоит_триггер"

Можно даже это сделать в одном триггере, поменяв, естественно, имя временной таблицы для второго инсёрта.

А то у вас из фактов - какие то тексты сообщений со статистикой (естественно, без названий стейтментов), по которым вы делаете какие то предположения. Реально же вы не знаете, что у вас там "тормозит".
...
Рейтинг: 0 / 0
Долгая выборка из INSERTED\DELETED во временную таблицу
    #38783359
Фотография SomewhereSomehow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АцкийСкотонаА насчёт ожиданий, так я же писал. Там промелькивает цхпакет , асинхрон Ио, но они не висят при запросе. Просто может совпало так. Я их не каждый раз вижу.

16737238 :
SomewhereSomehowПопробуйте собрать ожидания при помощи события sqlos.wait_info
...
Рейтинг: 0 / 0
Долгая выборка из INSERTED\DELETED во временную таблицу
    #38783495
Фотография SIMPLicity_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Параллелизм при одновременной вставке во временную таблицу. Похоже, типа.

Вообще какой-то странный лог для операции массового апдейта.

Кстати, херачьте тогда уж в табличную переменную, чо. По крайней мере, она после роллбэка сохранится
...
Рейтинг: 0 / 0
Долгая выборка из INSERTED\DELETED во временную таблицу
    #38783621
SIMPLicity_Параллелизм при одновременной вставке во временную таблицу. Похоже, типа.

Вообще какой-то странный лог для операции массового апдейта.

Кстати, херачьте тогда уж в табличную переменную, чо. По крайней мере, она после роллбэка сохранится
Тему прочитайте. Прежде чем выводы делать. Я неоднократно говорил что именно тормозит. Не вставка отнюдь.
...
Рейтинг: 0 / 0
Долгая выборка из INSERTED\DELETED во временную таблицу
    #38783628
alexeyvg, Какой вам еще трейс надо? В каком виде? Общепринятый стандарт форума есть? Если есть прошу указать.
...
Рейтинг: 0 / 0
Долгая выборка из INSERTED\DELETED во временную таблицу
    #38783635
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АцкийСкотонаalexeyvg, Какой вам еще трейс надо? В каком виде? Общепринятый стандарт форума есть? Если есть прошу указать.В профайлере нажимаете кнопочку Save, трейс сохраняется. Сохранённый файл прикладываете к посту в форуме.

При иследовании проблем производительности всегда используют профайлер, по крайней мере, если речь не об отладке одиночного запроса (да и в этом случае непонятно, зачем от него отказываться).

Для вашей задачи выберите следующие настройки профайлера, обратите внимание на набор Events и установите SPID из того окошка, откуда запускаете обновление таблицы:
...
Рейтинг: 0 / 0
Долгая выборка из INSERTED\DELETED во временную таблицу
    #38783752
Фотография SIMPLicity_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АцкийСкотонаSIMPLicity_ Параллелизм при одновременной вставке во временную таблицу. Похоже, типа.

Вообще какой-то странный лог для операции массового апдейта.

Кстати, херачьте тогда уж в табличную переменную, чо. По крайней мере, она после роллбэка сохранится
Тему прочитайте. Прежде чем выводы делать. Я неоднократно говорил что именно тормозит. Не вставка отнюдь.
Прошу прощения, есличо. Ориентировался исключительно на ТЕМУ. Топег дальше второй страницы не читал,- он там, похоже ( как тут принято ), сваливается в говно. Про "тормоза" - просто поделился опытом: было нечто похожее,- переписал - заработало шустро.

Удачи, типа!
...
Рейтинг: 0 / 0
Долгая выборка из INSERTED\DELETED во временную таблицу
    #38783839
SIMPLicity_, Если бы прочитали "дальше второй страницы", то увидели бы что тормозит не вставка во временную таблицу, а сам выбор из инсертеда.
Удачи Вам в дальнейшем с таким "подходом" к вопросам!

alexeyvg, Я для этих целей, дэбага, конечно несколько другие методы использую. Но понимаю что вам надо некоторые данные с трейса. Сейчас раскидаю таски и сделаю вам трейс в запрошенном виде. Ориентировочно- после обеда.
...
Рейтинг: 0 / 0
Долгая выборка из INSERTED\DELETED во временную таблицу
    #38784048
alexeyvg, Вот трейс. Но ничего полезного для решения проблемы там нет.
...
Рейтинг: 0 / 0
25 сообщений из 138, страница 5 из 6
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Долгая выборка из INSERTED\DELETED во временную таблицу
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]