Назад | Перейти на главную страницу

Производительность SQL Server tempdb

Я проводил несколько тестов производительности .net на множестве различных фреймворков доступа к данным.

Я заметил, что производительность при доступе к таблице tempdb в SQL намного выше, чем при использовании обычной таблицы. Я не совсем уверен, почему это так, но похоже, что когда entityFramwork (одна из фреймворков) устанавливает связь с

-- network protocol: TCP/IP
set quoted_identifier on
set arithabort off
set numeric_roundabort off
set ansi_warnings on
set ansi_padding on
set ansi_nulls on
set concat_null_yields_null on
set cursor_close_on_commit off
set implicit_transactions off
set language us_english
set dateformat mdy
set datefirst 7
set transaction isolation level read committed

Производительность снижена до уровня обычного стола.

Кто-нибудь знает, почему это должно быть?

На странице справки BOL для tempdb перечислены улучшения производительности, сделанные для доступа к tempdb.

Тем не менее, в вашем списке есть два параметра, которые будут влиять на выполнение кода: implicit_transactions и transaction isolation level.

поскольку read committed по умолчанию transaction isolation levelя предполагаю, что это настройка implicit_transactions к off каким-то образом вынуждает доступ к базе данных tempdb через дополнительный шаг, которого избегают при выполнении неявных транзакций.

Проверьте это, чтобы быть уверенным.

РЕДАКТИРОВАТЬ: в стороне, рассмотрите возможность выполнения действительно критических по времени временных вычислений в переменная таблицы; это только память и, следовательно, в 100-1000 раз быстрее, чем tempdb ...

Обратной стороной является очевидная точка уменьшения доходности, поскольку у табличных переменных нет индексов.