缓存池扩展(Buffer Pool Extensions) 缓存池扩展 的想法非常简单:把页文件存储在非常快的存储上,例如SSD硬盘,用来扩展缓存池。缓存池扩展来得非常方便,如果你不能给你的数据库服务器物理上增加更多的内存,可以考虑使用缓存池扩展。
) z! g* x% I' d' G; P
% ~5 Z7 \ Q, |& C, U7 d+ I资源调控器(Resource Governor) 资源调控器 首次是在SQL Server 2008里引入的,但那个时候还不是个成熟的技术,因为你不能在存储级别调控I/O操作,对于指定工作负荷组,你不能限制缓存池大小。在SQL Server 2014里这些都改变了,因为现在你可以压制I/O操作。限制缓冲池使用率还是不行,但谁会知道在SQL Server 2016里会怎样呢:)。
" i$ J4 m, |/ b4 p( c z' F4 R8 ~+ r+ E# h2 F' ~
锁优先级(Lock Priorities) 或许你已经知道,在企业版本里,SQL Server提供你在线操作,或者我可以称它们为“近乎在线操作”。它们近乎是在线的,因为内部SQL Server还是要获取一些锁,这会导致阻塞情况。因此SQL Server 2014引入了 锁优先级 ,在那里如果有这样的情况发生,你可以控制SQL Server如何应对。7 G6 c0 u8 x& j
* I7 A& x% I4 ]3 J/ S0 Y聚集列存储索引(Clustered Column Store Indexes) 在SQL Server 2014里引入的最热门的提升是 聚集列存储索引 ,在SQL Server里,它是惊艳的全新方式来处理列存储数据。另外聚集列存储索引也会直接改变——不用像分区切换这样的技巧。 9 P4 h6 q# Z! L$ [ d
: h! k4 Z$ Z) z1 L
内存优化表(In-Memory OLTP) 使用 内存优化表 微软声称你的工作负荷性能可以提升100倍。酷炫叼咋天了!现在一切都直接存储在内存里,不会涉及你的物理存储(包括事务日志,如果你想要的话)。另外内存优化表基于所谓的无锁数据结构,意味着锁,阻塞, 闩锁,旋转锁统统消失。当然,使用这种有前途的方法是有副作用的,还是有限制的…… * V; p2 B0 l! E& F3 w# S& G& T M
2 p- L5 P m: Y) G! O7 H延迟事务(Delayed Transactions) 你工作负荷的生产力不管有多好,最后的障碍和瓶颈每次都是事务日志。因为SQL Server使用了预先写入日志机制(Write-Ahead Logging mechanism),在事务提交前,事务必须总是物理写入到事务日志。但你的事务日志在慢的存储上,你的性能和生产力就会受伤害。因此SQL Server实现所谓的 延迟事务 …… " j" M( t4 o1 T" }6 H2 D3 \. H: Z+ E
基数计算(Cardinality Estimation) 在关系数据库里, 基数计算 是最重要的东西,因为这些基数计算会流入查询优化器,它的工作是生成足够好的执行计划。在SQL Server 2014里微软完全重写了基数计算来克服一些限制,基于历来这个是非常重要的组件。
, ]+ K7 h5 Q7 r- V
; p! j6 f, N: g8 I9 R; v7 U
6 g5 U$ g c% S' m- [* Y
; D) d% E" P$ y- j: i: I
9 p" \1 g% T5 g1 }+ o4 R9 R6 _ |