当前位置: 首页 > news >正文

Sqlserver关于tempdb临时数据库文件个数的最佳实践

官方文档
https://learn.microsoft.com/zh-cn/sql/relational-databases/databases/tempdb-database?view=sql-server-ver16
https://learn.microsoft.com/en-US/troubleshoot/sql/database-engine/performance/recommendations-reduce-allocation-contention

一般而言,如果逻辑处理器数目小于或等于 8,则使用的数据文件数与逻辑处理器数相同。 如果逻辑处理器数大于 8,请指定 8 个数据文件。 如果仍然存在争用,则以 4 的倍数增加数据文件的数量,直到争用减少到可接受的级别或对工作负荷/代码进行更改。tempdb 数据文件的最佳数量取决于 tempdb 中的争用程度。首先,您可以将 tempdb 配置为至少等于为 SQL Server 分配的逻辑处理器的数量。对于更高端的系统,起始数字可以是八 (8)。如果争用没有减少,您可能必须增加数据文件的数量。

Tempdb 系统数据库是包含以下内容的全局资源:
显式创建的临时用户对象。 它们包括全局或局部临时表及索引、临时存储过程、表变量、表值函数返回的表或游标。
数据库引擎创建的内部对象。 它们包括:
用于储存假脱机、游标、排序和临时大型对象 (LOB) 存储的中间结果的工作表。
用于哈希联接或哈希聚合操作的工作文件。
用于创建或重新生成索引等操作(如果指定了 SORT_IN_TEMPDB)的中间排序结果,或者某些 GROUP BY、ORDER BY 或 UNION 查询的中间排序结果。

版本存储区是数据页的集合,它包含支持用于行版本控制的功能的数据行。 有两种类型:公用版本存储区和联机索引生成版本存储区。 版本存储区包含:由通过行版本控制隔离或快照隔离事务使用 READ COMMITTED 的数据库中的数据修改事务生成的行版本。由数据修改事务为实现联机索引操作、多重活动结果集 (MARS) 以及 AFTER 触发器等功能而生成的行版本。

tempdb 中的操作是最小日志记录操作,以便回滚事务。 每次启动 SQL Server 时都会重新创建 tempdb,从而在系统启动时总是具有一个干净的数据库副本。 在断开联接时会自动删除临时表和存储过程,并且在系统关闭后没有活动连接。

tempdb 不会有什么内容从 SQL Server 的一个会话保存到另一个会话。 不允许对 tempdb 执行备份和还原操作。

辅助数据文件数取决于计算机上的(逻辑)处理器数。 一般而言,如果逻辑处理器数目小于或等于 8,则使用的数据文件数与逻辑处理器数相同。 如果逻辑处理器数大于 8,请指定 8 个数据文件。 如果仍然存在争用,则以 4 的倍数增加数据文件的数量,直到争用减少到可接受的级别或对工作负荷/代码进行更改。

The optimal number of tempdb data files depends on the degree of contention seen in tempdb. As a starting point, you can configure tempdb to be at least equal to the number of logical processors that are assigned for SQL Server. For higher-end systems, the starting number could be eight (8). If the contention is not reduced, you may have to increase the number of data files.
tempdb 数据文件的最佳数量取决于 tempdb 中的争用程度。首先,您可以将 tempdb 配置为至少等于为 SQL Server 分配的逻辑处理器的数量。对于更高端的系统,起始数字可以是八 (8)。如果争用没有减少,您可能必须增加数据文件的数量

How increasing the number of tempdb data files reduces contention
The following list explains how increasing the number of tempdb data files that have equal sizing reduces contention:
If you have one data file for the tempdb, you only have one GAM page, and one SGAM page for each 4 GB of space.
Increasing the number of data files that have the same sizes for tempdb effectively creates one or more GAM and SGAM pages for each data file.
The allocation algorithm for GAM allocates one extent at a time (eight contiguous pages) from the number of files in a round robin fashion while honoring the proportional fill. Therefore, if you have 10 equally sized files, the first allocation is from File1, the second from File2, the third from File3, and so on.
The resource contention of the PFS page is reduced because eight pages at a time are marked as FULL because GAM is allocating the pages.

增加 tempdb 数据文件的数量如何减少争用

以下列表说明了增加具有相同大小的 tempdb 数据文件的数量如何减少争用:
如果 tempdb 有一个数据文件,则每 4 GB 空间只有一个 GAM 页和一个 SGAM 页。
增加 tempdb 具有相同大小的数据文件的数量可以有效地为每个数据文件创建一个或多个 GAM 和 SGAM 页。
GAM 的分配算法以循环方式从文件数量中一次分配一个范围(八个连续页),同时遵守比例填充。因此,如果有 10 个大小相同的文件,则第一个分配来自 File1,第二个分配来自 File2,第三个分配来自 File3,依此类推。
PFS 页面的资源争用减少了,因为 GAM 正在分配页面,一次将八个页面标记为 FULL。

http://www.lryc.cn/news/186147.html

相关文章:

  • 【Java】微服务——微服务介绍和Eureka注册中心
  • C++ virtual 虚函数 虚基类
  • redis分布式秒杀锁
  • 【Redis】String内部编码方式
  • 川西旅游网系统-前后端分离(前台vue 后台element UI,后端servlet)
  • Paddle使用pyinstaller打包出错的解决方法
  • 【Java acm】特殊输入
  • 在Ubuntu 20.04搭建最小实验环境
  • 使用uwsgi部署Flask
  • Android平台实现lottie动画
  • JAVA练习百题之求矩阵对角线之和
  • MEM备考打卡
  • 短视频矩阵源码开发部署---技术解析
  • 百度小程序制作源码 百度引流做关键词排名之技巧
  • 【计算机组成 课程笔记】7.3 高速缓存 Cache
  • vscode搭建c/c++环境
  • macOS Sonoma 14.0(23A344) 正式版带 OpenCore 0.9.6 和 FirPE 三分区镜像
  • 神经网络(MLP多层感知器)
  • git与github的交互(文件与文件夹的上传)
  • Visual Studio常见编译错误记录
  • 如何应对数据安全四大挑战?亚马逊云科技打出“组合拳”
  • JavaScript——数据类型、类型转换
  • C位操作符
  • 【linux进程(三)】进程有哪些状态?--Linux下常见的三种进程状态
  • numString.charAt(i) - ‘0‘
  • 《Python 自动化办公应用大全》书籍推荐(包邮送书五本)
  • day57:ARMday4,程序状态寄存器读写指令、软中断指令、C和汇编的混合编程、开发板介绍
  • el-cascader
  • 图论第3天----第841题、第463题
  • 软件测试/测试开发丨利用ChatGPT 生成自动化测试脚本