位置: 编程技术 - 正文

SQL Server误区30日谈 第12天 TempDB的文件数和需要和CPU数目保持一致(sql server 错误)

编辑:rootadmin

误区 #:TempDB的文件数和需要和CPU数目保持一致

错误

哎,由于上述误区是微软“官方”的建议,并且还有大量博文坚持这个观点,这个误区已经是老生常谈。

但让人困惑的是SQL CAT团队给出的建议就是1:1,但这个建议是源自扩展方面的原理来说,而不是一个通用法则。因为他们所面对的大型客户数据量服务器和IO子系统都是大部分人没有机会遇到的。

每个实例仅仅允许有一个TempDb,但需要用到TempDB的地方却有很多,所以TempDB很容易成为性能瓶颈,我想大家数人都了解这一点,而大多数人所不了解的应该是在什么情况下才需要额外的TempDB文件。

当你看到PAGELATCH类型的阻塞时,说明遇到内存中分配位图的争用问题了。而看到PAGEIOLATCH,说明遇到I/O子系统层面的争用问题了。对于闩锁(Latch)你可以将其看作和普通锁是一种东西,但更轻量,更短,并且只会被存储引擎内部使用。

MVP Glenn Berry 有一篇博文里有查看sys.dm_os_wait_stats的DMV。这篇博文中可以查到你的服务器造成阻塞最多的原因是什么。如果你发现是PAGELATCH型等待,你可以使用这段脚本来查看是由于FPS,GAM还是SGAM争用造成的问题。

如果你遇到闩锁争用,可以通过跟踪标记或是多建一个TempDB文件来缓和这个状况(原理可以在知识库KB 查到),我已经写了一篇关于为什么追踪标记依然被需要的长博文,链接:Misconceptions around TF 。

在SQL SERVER 时代,TempDB的文件数需要和CPU核数保持1:1的关系,在SQL SERVER 和版本这条建议也适用,但由于SQL SERVER +后的优化措施(详细请看我的博文),你不再需要严格按照1:1的比例关系设置CPU核数和TempDB文件数,而是文件数和CPU核数的比例保持在1:2或是1:4就行了。

[题外话:在SQL PASS 我的好朋友Bob Ward,也是SQL CSS最牛的人。给出了一个新的公式:如果CPU核数小于等于8,使其比例保持在1:1,而如果CPU核数大于8,使用8个文件,当你发现闩锁争用现象时,每次额外加4个文件]

不过这也不能一概而论。上周我遇到一个问题,一个客户的TempDB负载大到需要个CPU配上个TempDB文件才能减轻闩锁争用。这是否意味着这是一个最佳实践呢?当然不是。

那你或许有疑问,为什么1:1的比例不好呢,那是因为太多的TempDB有可能引起另一个性能问题。如果你的一条查询中某些操作(比如排序)需要使用大量的内存,但内存不够时,就需要将这些内容分配到TempDB中。当存在多个TempDB文件时,由于TempDB的循环分配机制,这有可能导致性能被拖累,对于比较大的临时表也是如此。

那为什么循环分配机制对于TempDB存在大量文件时产生性能问题呢?有如下几种可能:

循环分配算法是针对文件组而言,而对于TempDB只能存在一个文件组。当这个文件组包含或个文件时,由于循环分配算法的线程有限,但对于大量文件的TempDB依然需要做一些额外的同步工作,因此这部分工作会造成性能损失 TempDB的文件大小不一致,则有可能导致某个单独文件的自动增长,从而造成热点IO。 当缓冲区需要通过LazyWriter释放一些空间时(TempDB的Checkpoint不会做写回操作),多个TempDB文件有可能导致IO子系统的随机读写问题,这会导致IO方面的性能问题。

所以这个选择让你进亦忧,退亦忧。到底多少TempDB文件才是合适的呢?我也不能给你具体答案,但是基于我多年咨询经验以及出席各种大会的经验,我可以给你一个指导方针---当为了解决闩锁争用时为TempDB创建多个文件要小心,仅仅在必须情况下才额外增加TempDB文件。也就是你需要在可扩展性和性能之间取得一个平衡。

希望上面的指导方针对你有帮助。

PS:回应一些评论:TempDB的文件没有必要分布在多个存储器之间。如果你看到PAGELATCH类型的等待,即使你进行了分布也不会改善性能,而如果PAGEIOLATCH型的等待,或许你需要多个存储器,但这也不是必然-有可能你需要讲整个TempDB迁移到另一个存储系统,而不是仅仅为TempDB增加一个文件。这需要你仔细分析后再做定夺。

推荐整理分享SQL Server误区30日谈 第12天 TempDB的文件数和需要和CPU数目保持一致(sql server 错误),希望有所帮助,仅作参考,欢迎阅读内容。

SQL Server误区30日谈 第12天 TempDB的文件数和需要和CPU数目保持一致(sql server 错误)

文章相关热门搜索词:sql server 1222解决,sql server 错误,sqlserver1053怎么解决,sqlserver1053怎么解决,sql server错误和使用情况报告,sql语句错误提示,sqlserver1053怎么解决,sqlserver1053怎么解决,内容如对您有帮助,希望把文章链接给更多的朋友!

SQL Server误区日谈 第天 在SQL Server 兼容模式下不能使用DMV 误区#.在SQLServer兼容模式下不能使用DMV错误对于兼容模式已经存在了很多误解。的兼容模式的数据库是否意味着能够附加或恢复到SQLServer数据

SQL Server误区日谈 第天 清除日志后会将相关的LSN填零初始化 误区#.清除日志后会将相关的LSN填零初始化错误当日志文件在手动增长,自动增长和创建时都会进行填零初始化操作。但是请不要把这个过程和定期清

SQL Server误区日谈 第天 CheckPoint只会将已提交的事务写入磁盘 误区#:CheckPoint只会将已提交的事务写入磁盘错误这个误区是由于太多人对日志和恢复系统缺少全面的了解而存在已久。CheckPoint会将自上次CheckPoint以来

标签: sql server 错误

本文链接地址:https://www.jiuchutong.com/biancheng/347827.html 转载请保留说明!

上一篇:SQL Server误区30日谈 第11天 镜像在检测到故障后瞬间就能故障转移(sql语句错误提示)

下一篇:SQL Server误区30日谈 第13天 在SQL Server 2000兼容模式下不能使用DMV(sql server 错误)

  • 增值税专票如何添加商品名称
  • 年终奖是否列入社保基数
  • 培训产生的差旅费
  • 2019年研发费用加计扣除标准
  • 合并会计报表调整分录
  • 增值税组成计税价格包括消费税吗
  • 独资合伙企业的所有者用于承担企业财务风险的财产是
  • 厂家给经销商的搭赠政策
  • 股权转让溢价会计处理
  • 什么叫应纳税额什么与什么的比率叫做税率
  • 现金支票存根联需要盖章吗?
  • 视同销售应付福利费账务处理是怎样的?
  • 销售生产用原材料取得的收入计入什么科目
  • 国外预提税是什么
  • 职工死去还有工资吗
  • 滞纳金账务处理
  • 发出商品确认收入的条件
  • 生产车间制造费用包括
  • 往年的营业外收入冲减
  • 预收款交税未开发票申报表怎么
  • 无形资产的摊销应计入什么科目
  • PHP:pg_field_size()的用法_PostgreSQL函数
  • 支付厂房租金计入什么科目
  • php 二叉树的遍历
  • 无偿划转长期股权投资
  • 铁路运输企业受托代征的印花税款信息
  • 高新技术企业的申报条件包括以下哪些
  • 同一控制下企业合并会计准则
  • php文件上传用什么请求方法
  • iis 7下安装laravel 5.4环境的方法教程
  • 第一季度季初资产总额和第一季度季末同一个数吗
  • 个人开发微信支付接口
  • thinkphp入口文件
  • php连接数据库mysql做登录页
  • 成本费用损失的区别和联系
  • 微信小程序项目中app.js文件是全局样式文件
  • vue好不好学
  • 谁能代替你啊
  • 电子税务局购票员变更
  • 加班补贴费
  • 公司缴个人所得税吗
  • 应交增值税一般是多少
  • 尚未报送年度会计报表
  • numpy array ndarray区别
  • 给客户维修设备更换配件怎么开票
  • mongodb查询工具
  • 织梦标签理解
  • 银行存款调节表调整后的银行存款余额
  • 认缴制和实缴制的时间
  • 10万销售额是含税还是不含税
  • 转租行为的税务处理方法
  • 基本存款账户可以办理
  • 去年计提的费用今年取得发票 汇算清缴
  • 银行代发的工资公司要求返还然后发一半
  • 增值税农产品免税
  • 支付货款退回如何处理
  • 银行存款支付比例规定
  • 固定资产一次性扣除政策
  • 内帐外帐的区别与联系
  • 银行存款日记账模板
  • 企业代购是什么意思
  • 正确使用显微镜的七个步骤
  • windows的实验步骤
  • win10的java环境该怎么配置?java环境变量配置介绍
  • linux日志类型
  • centos bond mode
  • mac桌面应用
  • win8关机键怎么添加到开始菜单
  • window8输入法不见了
  • margin负值
  • extjs 为某个事件设置拦截器
  • 衬线字体和无衬线字体各自的用途
  • python下读取公私钥做加解密实例详解
  • uil的简单常用操作
  • javascript面向对象精要pdf
  • python运行时间的几种方法
  • 河北省2021城乡居民医保优惠新政策
  • 安徽国税局发票查询系统
  • 没有税务备案,不用申报增值税
  • 国家税务局宝鸡市税务局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设