SQL Server 2014里的性能提升

时间:2021-12-02 15:34:51

在这篇文章里我想小结下SQL Server 2014引入各种惊艳性能提升!!

缓存池扩展(Buffer Pool Extensions)

缓存池扩展的想法非常简单:把页文件存储在非常快的存储上,例如SSD硬盘,用来扩展缓存池。缓存池扩展来得非常方便,如果你不能给你的数据库服务器物理上增加更多的内存,可以考虑使用缓存池扩展。

资源调控器(Resource Governor)

资源调控器首次是在SQL Server 2008里引入的,但那个时候还不是个成熟的技术,因为你不能在存储级别调控I/O操作,对于指定工作负荷组,你不能限制缓存池大小。在SQL Server 2014里这些都改变了,因为现在你可以压制I/O操作。限制缓冲池使用率还是不行,但谁会知道在SQL Server 2016里会怎样呢:)。

锁优先级(Lock Priorities)

或许你已经知道,在企业版本里,SQL Server提供你在线操作,或者我可以称它们为“近乎在线操作”。它们近乎是在线的,因为内部SQL Server还是要获取一些锁,这会导致阻塞情况。因此SQL Server 2014引入了锁优先级,在那里如果有这样的情况发生,你可以控制SQL Server如何应对。

聚集列存储索引(Clustered Column Store Indexes)

在SQL Server 2014里引入的最热门的提升是聚集列存储索引,在SQL Server里,它是惊艳的全新方式来处理列存储数据。另外聚集列存储索引也会直接改变——不用像分区切换这样的技巧。

内存优化表(In-Memory OLTP)

使用内存优化表微软声称你的工作负荷性能可以提升100倍。酷炫叼咋天了!现在一切都直接存储在内存里,不会涉及你的物理存储(包括事务日志,如果你想要的话)。另外内存优化表基于所谓的无锁数据结构,意味着锁,阻塞,闩锁,旋转锁统统消失。当然,使用这种有前途的方法是有副作用的,还是有限制的……

延迟事务(Delayed Transactions)

你工作负荷的生产力不管有多好,最后的障碍和瓶颈每次都是事务日志。因为SQL Server使用了预先写入日志机制(Write-Ahead Logging mechanism),在事务提交前,事务必须总是物理写入到事务日志。但你的事务日志在慢的存储上,你的性能和生产力就会受伤害。因此SQL Server实现所谓的延迟事务……

基数计算(Cardinality Estimation)

在关系数据库里,基数计算是最重要的东西,因为这些基数计算会流入查询优化器,它的工作是生成足够好的执行计划。在SQL Server 2014里微软完全重写了基数计算来克服一些限制,基于历来这个是非常重要的组件。

参考文章:

https://www.sqlpassion.at/archive/2014/03/18/performance-improvements-in-sql-server-2014/