powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Обработка UPDATE запроса длится очень долго. SQL Server 2008R2
12 сообщений из 12, страница 1 из 1
Обработка UPDATE запроса длится очень долго. SQL Server 2008R2
    #40058914
vchslv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет, народ,
У меня возникла ситуация, которую я не могу самостоятельно объяснить.
Есть одна таблица (целевая таблица) с примерно 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.
Может кто с таким сталкивался? В чём может быть причина?
...
Рейтинг: 0 / 0
Обработка UPDATE запроса длится очень долго. SQL Server 2008R2
    #40058918
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vchslv,

выполните оба update с включенным set statistics io,time on
получите два плана выполнения
получите DDL для обеих таблиц и тестовой таблицы

выложите всё здесь для анализа
...
Рейтинг: 0 / 0
Обработка UPDATE запроса длится очень долго. SQL Server 2008R2
    #40058920
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vchslv,
для начала сравните планы запроса - плохой и хороший. Лучше всего оба плана в XML формате опубликовать здесь.
...
Рейтинг: 0 / 0
Обработка UPDATE запроса длится очень долго. SQL Server 2008R2
    #40058924
vchslv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов, komrad,
это оригинальная таблица (1200 сек.). в следующем сообщении копия (1 сек.)
...
Рейтинг: 0 / 0
Обработка UPDATE запроса длится очень долго. SQL Server 2008R2
    #40058925
vchslv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не смог добавить 2 файла в одно сообщение...
...
Рейтинг: 0 / 0
Обработка UPDATE запроса длится очень долго. SQL Server 2008R2
    #40058934
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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]
...
Рейтинг: 0 / 0
Обработка UPDATE запроса длится очень долго. SQL Server 2008R2
    #40058935
vchslv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
komrad,

спасибо за быстрый ответ!
К сожалению до вторника банк данных недоступен. Попробовать не смогу. Как сделаю - отпишусь о результатах.
...
Рейтинг: 0 / 0
Обработка UPDATE запроса длится очень долго. SQL Server 2008R2
    #40059589
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vchslv
komrad,

спасибо за быстрый ответ!
К сожалению до вторника банк данных недоступен. Попробовать не смогу. Как сделаю - отпишусь о результатах.


ну, если банк данных , точнее - "портал с банком данных", то понятно, что до вторника никак, видимо с пятницы по понедельник выходные, да?
...
Рейтинг: 0 / 0
Обработка UPDATE запроса длится очень долго. SQL Server 2008R2
    #40059592
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

БД по-немецки - Datenbank. Видимо, калька отсюда.

И таки да, пасхальные выходные с Пт по Пн включительно.
...
Рейтинг: 0 / 0
Обработка UPDATE запроса длится очень долго. SQL Server 2008R2
    #40059597
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vchslv,

Попробуйте пересчитать статистику для столбца datum, в плане неверная оценка количества строк для предиката [RANGIER_DB].[dbo].[aznw2_tag].[Datum]>='2019-11-02 00:00:00.000'.
...
Рейтинг: 0 / 0
Обработка UPDATE запроса длится очень долго. SQL Server 2008R2
    #40060122
vchslv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ролг Хупин, Ролг Хупин, Владислав Колосов,

так и есть :) были пасхальные каникулы, и у всех отобрали клавиатуры, чтоб на выходных не работали :)
банк данных с немецкого, да. Языковая деформация уже... Было бы значительно удобнее иметь все на английском, но почему-то было решено сделать иначе...
Доступ к Datenbank уже есть, скоро буду пробовать.
...
Рейтинг: 0 / 0
Обработка UPDATE запроса длится очень долго. SQL Server 2008R2
    #40060176
vchslv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот что я сделал.
1. Восстановил базу данных из бэкапа под другим именем
2. удалил все таблицы, кроме затронутых в запросе.
3. Снова сделал бэкап (чтобы в случае необходимости другие тесты делать)
4. Проверил запрос с целевой (оригинальной) таблицей, это было ооочень долго (после 10 минут я прервал), c копией - несколько секунд.
5. Обновил статистику, правда не отдельных столбцов, а во всей таблице
Код: sql
1.
2.
3.
4.
5.
USE RANGIER_DB_ZAI_SEL_TEST;   
GO  
-- The following example updates the statistics for all indexes on the SalesOrderDetail table.   
UPDATE STATISTICS dbo.aznw2_tag;   
GO 


и... теперь все работает быстро в обоих случаях!

Спасибо большое всем за помощь!
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Обработка UPDATE запроса длится очень долго. SQL Server 2008R2
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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