SQL Server tempdb 性能

SQL Server tempdb 性能

我一直在对许多不同的数据访问框架进行一些 .net 性能测试。

我注意到的一件事是,在 SQL 中访问 tempdb 表的性能比使用常规表时要快得多。我不太清楚这是为什么,但似乎当 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

其性能降低至与普通表相同的水平。

有人知道为什么会这样吗?

答案1

tempdb 的 BOL 帮助页面列出了访问 tempdb 的性能改进。

也就是说,列表中有两个设置会影响代码的执行方式:implicit_transactionstransaction isolation level

因为read committed是默认设置transaction isolation level,所以我的猜测是,设置implicit_transactions为以off某种方式强制 tempdb 访问通过一个在进行隐式事务时可以避免的额外步骤。

测试一下以确保无误。

编辑:顺便说一句,考虑在表变量;这是仅限内存的,因此比 tempdb 快 100 到 1000 倍......

缺点是由于表变量没有索引,因此存在明显的收益递减点。

相关内容