|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
ART-CODEВозможно, COLUMNS_UPDATED естьТо же самое. Смысл имеет лишь сравнение соответствующих записей deleted и inserted. Если записей более одной, то это возможно только при наличии полей, однозначно связывающих deleted и inserted и неизменившихся в результате данного UPDATE. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 15:01 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
АцкийСкотона, триггер такой: Код: sql 1. 2. 3.
Таблица: 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 маловато для таких операций. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 15:10 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
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 Я не знаю как у вас отрабатывает быстрее. А сколько конкретно первый и второй стейтмент по времени идут? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 15:19 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
Владислав Колосов, Ну у меня полей поболее. Сколько ваш запрос занимает? Сделайте еще селект инто с физической таблицки на которой триггре висит. У вас есть такая же разительная разница как у меня? Кста, основныей файлы БД и темпдб на одном диске? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 15:25 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
АцкийСкотона, у нас хранилище, а не диск. Добавил вставку - еще 1-2 секунды прибавилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 15:47 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
Владислав КолосовАцкийСкотона, у нас хранилище, а не диск. Добавил вставку - еще 1-2 секунды прибавилось. а можете во так у себя попробовать? select getutcdate() select * into #inserted from inserted select getutcdate() select * into #inserted2 from temp.cust select getutcdate() Какие результаты в секундах у первого и второго? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 15:54 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
АцкийСкотона, Быстрее только в первый раз, в дальнейшем ситуация как у вас не воспроизвелась. У вас же, как я понял, ситуация воспроизводится стабильно. Ок, вы не видите активности на сервере, но посмотрите при помощи расширенного события, чего ждет запрос? Планы что-нибудь показывают? Например, при сканировании обычной таблицы параллельный скан , при сканировании inserted нет. Но у меня такая разница как у вас не воспроизводится, впрочем я ничего не знаю ни о ваших данных, ни об условиях, ни о способе измерения. Как я уже говорил, либо репро, либо какая-то конкретика, чего так долго ждет запрос. А то получается, что у вас медленно, воспроизвести в простом случае это нельзя, а больше никаких данных вы не даете. Гадать можно долго, хотя, может рано или поздно кто-то угадает, но я это делать не берусь. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 15:58 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
АцкийСкотонаВладислав КолосовАцкийСкотона, у нас хранилище, а не диск. Добавил вставку - еще 1-2 секунды прибавилось. а можете во так у себя попробовать? select getutcdate() select * into #inserted from inserted select getutcdate() select * into #inserted2 from temp.cust select getutcdate() Какие результаты в секундах у первого и второго? Просто во временную таблицу - секунда, из inserted - около 5 секунд. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 16:04 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
SomewhereSomehow, Ну у меня такие же планы ка у вас. Один в один наверно даже по цифрам. Тоже вся стоимость в скане инсертеда. А какие мне вам данные еще дать? Сами данные не могу, пардон, они закрытые. :) Могу структуру таблички дать завтра. Щас сваливаю. Резину менять надо. Страшно а то по снегу на грязевой катать. :D ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 16:04 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
Владислав Колосов, а сколько строк в таблице? И какова примерная плотность заполнения полей? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 16:05 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
АцкийСкотона, в триггере 98% времени выполнения занимает вставку во временную таблицу, 2% скан inserted. Тем не менее, вставка в триггере выполняется намного медленнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 16:12 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
АцкийСкотонаА какие мне вам данные еще дать? Репро, т.е. такой скрипт, запустив который у участников форума воспроизвелось бы описываемое поведение. Да, это муторно, нужно делать скрипты тестовых таблиц, заполнять их какими-то псевдо данными и т.д., но это лучший способ получить предметный ответ. Если репро не получается сделать, то хотя бы ожидания (в третий раз по-моему повторяю) при выполнении вашего запроса на вашем сервере. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 16:12 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
500000 строк, я же писал. Размер - 77 мб. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 16:13 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
Владислав КолосовАцкийСкотона, в триггере 98% времени выполнения занимает вставку во временную таблицу, 2% скан inserted. Тем не менее, вставка в триггере выполняется намного медленнее. А ничего не путаете? У меня и у SomewhereSomehow 98% именно скан инсерта, а не вставка во временную таблицу. Вот попробуйте просто селект 1 из инсертеда сделать. Ради интереса. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 16:52 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
Владислав Колосов500000 строк, я же писал. Размер - 77 мб. У меня триста тыщ 308 метров весят. Судя по плану. План свой показать для обоих запросов можете, если не затруднит? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 16:54 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
SomewhereSomehowАцкийСкотонаА какие мне вам данные еще дать? Репро, т.е. такой скрипт, запустив который у участников форума воспроизвелось бы описываемое поведение. Да, это муторно, нужно делать скрипты тестовых таблиц, заполнять их какими-то псевдо данными и т.д., но это лучший способ получить предметный ответ. Если репро не получается сделать, то хотя бы ожидания (в третий раз по-моему повторяю) при выполнении вашего запроса на вашем сервере. Проблематично мне такой скрипт написать. А насчёт ожиданий, так я же писал. Там промелькивает цхпакет , асинхрон Ио, но они не висят при запросе. Просто может совпало так. Я их не каждый раз вижу. Завтра хочу посмотреть план реалтайм прямо, который в момент выполнения юзать. Может что-то в настройках инстанса? Есть идеи? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 17:02 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
АцкийСкотонаМожет что-то в настройках инстанса? Есть идеи?Тут обсуждение превратилось в какое то препирательство по общесиквельной тематике. Привнесите конкретику. Выложите результат трейса (с заходом внутрь), в виде файла трейса, для вариантов с SELECT "ПОЛЕ" INTO #T_INSERTED FROM INSERTED и SELECT "ПОЛЕ" INTO #T_INSERTED FROM "Таблица_на_которой_стоит_триггер" Можно даже это сделать в одном триггере, поменяв, естественно, имя временной таблицы для второго инсёрта. А то у вас из фактов - какие то тексты сообщений со статистикой (естественно, без названий стейтментов), по которым вы делаете какие то предположения. Реально же вы не знаете, что у вас там "тормозит". ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 17:47 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
АцкийСкотонаА насчёт ожиданий, так я же писал. Там промелькивает цхпакет , асинхрон Ио, но они не висят при запросе. Просто может совпало так. Я их не каждый раз вижу. 16737238 : SomewhereSomehowПопробуйте собрать ожидания при помощи события sqlos.wait_info ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 18:25 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
Параллелизм при одновременной вставке во временную таблицу. Похоже, типа. Вообще какой-то странный лог для операции массового апдейта. Кстати, херачьте тогда уж в табличную переменную, чо. По крайней мере, она после роллбэка сохранится ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 23:32 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
SIMPLicity_Параллелизм при одновременной вставке во временную таблицу. Похоже, типа. Вообще какой-то странный лог для операции массового апдейта. Кстати, херачьте тогда уж в табличную переменную, чо. По крайней мере, она после роллбэка сохранится Тему прочитайте. Прежде чем выводы делать. Я неоднократно говорил что именно тормозит. Не вставка отнюдь. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2014, 08:37 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
alexeyvg, Какой вам еще трейс надо? В каком виде? Общепринятый стандарт форума есть? Если есть прошу указать. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2014, 08:59 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
АцкийСкотонаalexeyvg, Какой вам еще трейс надо? В каком виде? Общепринятый стандарт форума есть? Если есть прошу указать.В профайлере нажимаете кнопочку Save, трейс сохраняется. Сохранённый файл прикладываете к посту в форуме. При иследовании проблем производительности всегда используют профайлер, по крайней мере, если речь не об отладке одиночного запроса (да и в этом случае непонятно, зачем от него отказываться). Для вашей задачи выберите следующие настройки профайлера, обратите внимание на набор Events и установите SPID из того окошка, откуда запускаете обновление таблицы: ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2014, 09:12 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
АцкийСкотонаSIMPLicity_ Параллелизм при одновременной вставке во временную таблицу. Похоже, типа. Вообще какой-то странный лог для операции массового апдейта. Кстати, херачьте тогда уж в табличную переменную, чо. По крайней мере, она после роллбэка сохранится Тему прочитайте. Прежде чем выводы делать. Я неоднократно говорил что именно тормозит. Не вставка отнюдь. Прошу прощения, есличо. Ориентировался исключительно на ТЕМУ. Топег дальше второй страницы не читал,- он там, похоже ( как тут принято ), сваливается в говно. Про "тормоза" - просто поделился опытом: было нечто похожее,- переписал - заработало шустро. Удачи, типа! ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2014, 10:43 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
SIMPLicity_, Если бы прочитали "дальше второй страницы", то увидели бы что тормозит не вставка во временную таблицу, а сам выбор из инсертеда. Удачи Вам в дальнейшем с таким "подходом" к вопросам! alexeyvg, Я для этих целей, дэбага, конечно несколько другие методы использую. Но понимаю что вам надо некоторые данные с трейса. Сейчас раскидаю таски и сделаю вам трейс в запрошенном виде. Ориентировочно- после обеда. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2014, 11:33 |
|
|
start [/forum/topic.php?fid=46&msg=38783041&tid=1700245]: |
0ms |
get settings: |
11ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
27ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 139ms |
0 / 0 |