12 / 12 / 0
Регистрация: 23.03.2009
Сообщений: 107
|
||||||||||||||||
1 | ||||||||||||||||
Долго выполняется Update по нулю строк (Where)12.07.2020, 00:09. Показов 3886. Ответов 13
Метки нет (Все метки)
Добрый день.
Есть таблица с несколькими миллионами записей. Есть поле Column1(float, NULL), в котором только у некоторых записей значение не NULL. Стоит задача очистить поле Column1 (задать значение NULL) для всех записей. Даже после того, как я задам это значение для всех записей, при повторном запуске UPDATE выполняется очень долго, хотя в таблице уже нет записей, которые нужно обновлять: 2,5 минуты:
0 секунд:
Пересоздание поля с пересозданием NONCLUSTERED COLUMNSTORE INDEX длится ещё дольше. Используется MS SQL Server 2019. Уровень совместимости БД такой же. Господа, подскажите почему так и что делать?
0
|
12.07.2020, 00:09 | |
Ответы с готовыми решениями:
13
Долго выполняется код. Долго выполняется setText Долго выполняется запрос к БД Долго выполняется подключение к БД |
2806 / 1676 / 884
Регистрация: 14.04.2015
Сообщений: 5,717
|
|
12.07.2020, 08:40 | 2 |
Del
0
|
12 / 12 / 0
Регистрация: 23.03.2009
Сообщений: 107
|
||||||
12.07.2020, 08:56 [ТС] | 3 | |||||
Вы имеете ввиду так? Что-то не выходит.
Неправильный синтаксис около ключевого слова "is".
0
|
2806 / 1676 / 884
Регистрация: 14.04.2015
Сообщений: 5,717
|
|
12.07.2020, 09:07 | 4 |
Патриарх, поэтому и удалил этот коммент сразу же, потому что невнимательно почитал запрос)
0
|
3499 / 2083 / 742
Регистрация: 02.06.2013
Сообщений: 5,078
|
||||||
12.07.2020, 10:26 | 5 | |||||
Патриарх, выполните в SSMS
0
|
12 / 12 / 0
Регистрация: 23.03.2009
Сообщений: 107
|
||||||
12.07.2020, 11:16 [ТС] | 6 | |||||
Результат:
Кликните здесь для просмотра всего текста
0
|
3499 / 2083 / 742
Регистрация: 02.06.2013
Сообщений: 5,078
|
|
12.07.2020, 12:51 | 7 |
Патриарх,
1. Сервер не умеет использовать кеолумнстор при отборе строк для апдейта, когда изменяется колонка, входящая в этот колумнстор. Поэтому, в отличие от селекта, сканируется кластерный, а не колумнстор. 2. В запросе ожиданий PAGEIOLATCH_SH почти на 2 минуты. Это говорит либо о проблемах с дисками, либо сиквелу выделено мало памяти. ЗЫ: Обновите сиквел до последнего CU, а то у вас голый RTM.
1
|
12 / 12 / 0
Регистрация: 23.03.2009
Сообщений: 107
|
|
12.07.2020, 13:17 [ТС] | 8 |
Вкатил сейчас CU5. Теперь версия: 15.0.4043.16
Во время выполнения запроса файл БД читается с диска со скоростью 150 метров/с, забивая очередь диска на 100% (больше к этому диску никто не обращается). Сиквелу назначено 8 Гб памяти (при размере БД 16Гб). При таком раскладе время выполнения: 2 минуты Попробовал увеличить память до 20 Гб - повторный запуск выполняется мгновенно. Можно как-то сказать сиквелу, что нужно держать в памяти только эту колонку?
0
|
3499 / 2083 / 742
Регистрация: 02.06.2013
Сообщений: 5,078
|
|
12.07.2020, 13:42 | 9 |
0
|
12 / 12 / 0
Регистрация: 23.03.2009
Сообщений: 107
|
|
12.07.2020, 13:44 [ТС] | 10 |
0
|
3499 / 2083 / 742
Регистрация: 02.06.2013
Сообщений: 5,078
|
|
12.07.2020, 13:52 | 11 |
Патриарх, задача какая? Зачем колумнстор?
0
|
12 / 12 / 0
Регистрация: 23.03.2009
Сообщений: 107
|
||||||||||||||||
12.07.2020, 14:16 [ТС] | 12 | |||||||||||||||
Я пытался ускорить получение Count и Max по колонке Column1 - благодаря колумнстору я получаю данные сильно быстрее, чем без него:
Добавлено через 14 минут Добавил ещё некластеризованный индекс по той же колонке Column1 и стало выполняться мгновенно при тех же 8ГБ памяти, выделенных на сервер:
Сейчас у таблицы 3 индекса:
0
|
3499 / 2083 / 742
Регистрация: 02.06.2013
Сообщений: 5,078
|
|||||||||||
12.07.2020, 14:16 | 13 | ||||||||||
Сообщение было отмечено Патриарх как решение
Решение
Если таких записей много, то ускорить не выйдет.
Если мало, то сделайте обычный фильтрованный индекс
1
|
12 / 12 / 0
Регистрация: 23.03.2009
Сообщений: 107
|
|
12.07.2020, 14:24 [ТС] | 14 |
Исправил индекс в соответствии с рекомендациями. Всё круто. Спасибо.
0
|
12.07.2020, 14:24 | |
12.07.2020, 14:24 | |
Помогаю со студенческими работами здесь
14
Долго выполняется цикл Долго выполняется запрос Долго выполняется запрос Программа долго выполняется Запрос выполняется очень долго Долго выполняется программа и зависает Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |