Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вставка в tempdb происходит быстрее, чем БД / 6 сообщений из 6, страница 1 из 1
04.02.2021, 17:33
    #40041747
Smile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в tempdb происходит быстрее, чем БД
Файлы tempdb и БД лежат на одном и том же дисковом массиве.
Свободного места в БД предостаточно, файлы БД и журнала во время выполнения запроса не растут (нет надобности).
В выборке ~600 млн. записей, состоящих из двух полей типа INT.
Вот так вставка выполняется за 3,5 мин.
Код: sql
1.
2.
3.
4.
5.
6.
7.
	
	;WITH t1 AS (SELECT id, a FROM t3)
	SELECT t1.id, t2.d INTO #t
	FROM t1 INNER JOIN t2 ON t1.a=t2.b
	UNION 
	SELECT t1.id, t2.d 
	FROM t1 INNER JOIN t2 ON t1.a=t2.c


А вот так не выполняется и за 15 мин., дальше я просто не жду, так как предполагаю, что здесь что-то не так.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
	
	;WITH t1 AS (SELECT id, a FROM t3)
	INSERT t
	SELECT t1.id, t2.d 
	FROM t1 INNER JOIN t2 ON t1.a=t2.b
	UNION 
	SELECT t1.id, t2.d 
	FROM t1 INNER JOIN t2 ON t1.a=t2.c


Оценочные планы запросов идентичны на 100% (за исключением #t и t, разумеется), актуальный же я не могу посмотреть во втором случае.

UNION нужен взамен OR в джоине, иначе все совсем плохо в обоих случаях.
Все поля, встречающиеся в запросе, имеют один и тот же тип INT
Индексов на t нет, оба поля так же INT и NOT NULL
С БД кроме меня никто не работает, никаких операций, кроме выше упомянутого запроса в ней не выполняется.

Почему так?
...
Рейтинг: 0 / 0
04.02.2021, 17:41
    #40041756
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в tempdb происходит быстрее, чем БД
Smile,

причин может быть несколько, но tempdb особая база

https://dba.stackexchange.com/questions/258014/is-it-generally-faster-to-select-into-a-temp-table-than-selecting-into-an-actual
...
Рейтинг: 0 / 0
04.02.2021, 17:41
    #40041757
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в tempdb происходит быстрее, чем БД
Smile,

параметры баз могут быть разные - модель восстановление, количество VLF, таблица ещё кем-то используется, индексы, триггеры.
...
Рейтинг: 0 / 0
04.02.2021, 17:51
    #40041760
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в tempdb происходит быстрее, чем БД
komrad
Smile,

причин может быть несколько, но tempdb особая база

https://dba.stackexchange.com/questions/258014/is-it-generally-faster-to-select-into-a-temp-table-than-selecting-into-an-actual


Ога. Ща "несколько".

1 и последняя = при работе темпдб запись данных на диск производится реже, только при крайней необходимости и фиксация транзакций (запись в журнал) тоже.

Поскольку потеря данных несущественна.
В некоторых случаях, транзакция ваще может обойтись без записи на диск.
...
Рейтинг: 0 / 0
04.02.2021, 18:00
    #40041763
Smile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в tempdb происходит быстрее, чем БД
Понял, спасибо за ответы
...
Рейтинг: 0 / 0
04.02.2021, 21:42
    #40041838
Smile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в tempdb происходит быстрее, чем БД
WITH (TABLOCK) выручил. Вставка в БД укладывается в 5 минут и лог не пухнет...
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вставка в tempdb происходит быстрее, чем БД / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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