|
Обработка UPDATE запроса длится очень долго. SQL Server 2008R2
|
|||
---|---|---|---|
#18+
Привет, народ, У меня возникла ситуация, которую я не могу самостоятельно объяснить. Есть одна таблица (целевая таблица) с примерно 5,6 миллионами строк, ежедневный прирост данных составляет в среднем 1,3 тысячи строк. Данные в этой таблице ежедневно обновляются. Новые данные берутся сгруппированными из другой таблицы (исходная таблица, 38 тысяч сгруппированных строк, 42 тысячи, если данные не сгруппированы)ю Исходная и целевая таблицы соединены командой INNER JOIN. Обновление затрагивает около 17 тысяч записей в целевой таблице. UPDATE-запрос обрабатывается около 1200 секунд! Это очень-очень долго. В поисках причины я сделал идентичную копию целевой таблицы и запустил тот же запрос. В этом случае данные обновились за 1 секунду! Я все проверил. Все настройки целевой таблицы и копии идентичны. Данные тоже идентичны. Одно различие заключалось во фрагментации индекса, но значение в обоих случаях было ниже 1%. Я все равно перестроил индексы (REBUILD), но это не помогло. Согласно плану выполнения обновления целевой таблицы (Функция SQL Сервера. К сожалению не знаю как это в русском интерфейсе названо. У меня на немецком языке - «Ausführungsplan»), 100% затрат используются для «Сканирования кластерного индекса», 0% - для «Обновление кластерного индекса» (это с оригинальной целевой таблицей, длительность - 1200 секунд). Согласно плану выполнения обновления копии целевой таблицы, 43% затрат идет на «Сканирование кластерного индекса», 54% - на «Обновление кластерного индекса» (копия целевой таблицы, продолжительность - 1 секунда). В планах выполнения есть и другие части, но процент очень низкий. Планы исполнения выглядят иначе. Версия SQL Server - 10.50.4000. Может кто с таким сталкивался? В чём может быть причина? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2021, 16:32 |
|
Обработка UPDATE запроса длится очень долго. SQL Server 2008R2
|
|||
---|---|---|---|
#18+
vchslv, выполните оба update с включенным set statistics io,time on получите два плана выполнения получите DDL для обеих таблиц и тестовой таблицы выложите всё здесь для анализа ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2021, 16:56 |
|
Обработка UPDATE запроса длится очень долго. SQL Server 2008R2
|
|||
---|---|---|---|
#18+
vchslv, для начала сравните планы запроса - плохой и хороший. Лучше всего оба плана в XML формате опубликовать здесь. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2021, 16:57 |
|
Обработка UPDATE запроса длится очень долго. SQL Server 2008R2
|
|||
---|---|---|---|
#18+
Владислав Колосов, komrad, это оригинальная таблица (1200 сек.). в следующем сообщении копия (1 сек.) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2021, 17:30 |
|
Обработка UPDATE запроса длится очень долго. SQL Server 2008R2
|
|||
---|---|---|---|
#18+
не смог добавить 2 файла в одно сообщение... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2021, 17:32 |
|
Обработка UPDATE запроса длится очень долго. SQL Server 2008R2
|
|||
---|---|---|---|
#18+
vchslv, в медленном плане чудовищная недооценка (красные стрелки) кол-ва записей по обеим таблицам на основе такой оценки был выбран NestedLoops и это катастрофа в быстром всё ок (зеленые стрелки) и был выбран Hash Match обновите статистику по [RANGIER_DB].[dbo].[aznw2_tag].[PK_aznw2_tag] [RANGIER_DB].[dbo].[aznw2_tag_ueber_h_korr_log].[PK_aznw2_tag_ueber_h_korr_log] ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2021, 18:07 |
|
Обработка UPDATE запроса длится очень долго. SQL Server 2008R2
|
|||
---|---|---|---|
#18+
komrad, спасибо за быстрый ответ! К сожалению до вторника банк данных недоступен. Попробовать не смогу. Как сделаю - отпишусь о результатах. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2021, 18:15 |
|
Обработка UPDATE запроса длится очень долго. SQL Server 2008R2
|
|||
---|---|---|---|
#18+
vchslv komrad, спасибо за быстрый ответ! К сожалению до вторника банк данных недоступен. Попробовать не смогу. Как сделаю - отпишусь о результатах. ну, если банк данных , точнее - "портал с банком данных", то понятно, что до вторника никак, видимо с пятницы по понедельник выходные, да? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2021, 19:19 |
|
Обработка UPDATE запроса длится очень долго. SQL Server 2008R2
|
|||
---|---|---|---|
#18+
Ролг Хупин, БД по-немецки - Datenbank. Видимо, калька отсюда. И таки да, пасхальные выходные с Пт по Пн включительно. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2021, 20:22 |
|
Обработка UPDATE запроса длится очень долго. SQL Server 2008R2
|
|||
---|---|---|---|
#18+
vchslv, Попробуйте пересчитать статистику для столбца datum, в плане неверная оценка количества строк для предиката [RANGIER_DB].[dbo].[aznw2_tag].[Datum]>='2019-11-02 00:00:00.000'. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2021, 22:48 |
|
Обработка UPDATE запроса длится очень долго. SQL Server 2008R2
|
|||
---|---|---|---|
#18+
Ролг Хупин, Ролг Хупин, Владислав Колосов, так и есть :) были пасхальные каникулы, и у всех отобрали клавиатуры, чтоб на выходных не работали :) банк данных с немецкого, да. Языковая деформация уже... Было бы значительно удобнее иметь все на английском, но почему-то было решено сделать иначе... Доступ к Datenbank уже есть, скоро буду пробовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2021, 12:48 |
|
Обработка UPDATE запроса длится очень долго. SQL Server 2008R2
|
|||
---|---|---|---|
#18+
Вот что я сделал. 1. Восстановил базу данных из бэкапа под другим именем 2. удалил все таблицы, кроме затронутых в запросе. 3. Снова сделал бэкап (чтобы в случае необходимости другие тесты делать) 4. Проверил запрос с целевой (оригинальной) таблицей, это было ооочень долго (после 10 минут я прервал), c копией - несколько секунд. 5. Обновил статистику, правда не отдельных столбцов, а во всей таблице Код: sql 1. 2. 3. 4. 5.
и... теперь все работает быстро в обоих случаях! Спасибо большое всем за помощь! ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2021, 15:56 |
|
|
start [/forum/topic.php?fid=46&fpage=28&tid=1684857]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
others: | 336ms |
total: | 484ms |
0 / 0 |