SQL Server中,内存无疑是非常重要的一环,因为它决定了你能使用多少缓存。当你从存储中读取数据,数据会在缓冲池中缓存。直接读缓存是最快的,如果经常访问的数据得不到缓存,那就只能读存储,速度自然就慢下来了。但内存相对而言是比较昂贵的,不过从SQL Server2014起,我们可以用 SSD 扩展缓冲池。SQL Server 2014 中引入的缓冲池扩展提供数据库引擎缓冲池的非易失性随机存取内存(即固态硬盘)扩展的无缝集成,从而显著提高 I/O 吞吐量。
优点:
- 随机 I/O 吞吐量提高
- I/O 滞后时间缩短
- 事务吞吐量提高
- 由于采用更大的混合缓冲池,读取性能提高
- 具有一种可利用现有和将来的低成本内存驱动器的缓存体系结构
如何开启:
ALTER SERVER CONFIGURATION
SET BUFFER POOL EXTENSION ON
(FILENAME = 'G:\SSDCACHE\Example.BPE', SIZE = 20 GB);
如何修改:
ALTER SERVER CONFIGURATION
SET BUFFER POOL EXTENSION OFF;
GO
EXEC sp_configure 'max server memory (MB)', 12000;
GO
RECONFIGURE;
GO
ALTER SERVER CONFIGURATION
SET BUFFER POOL EXTENSION ON
(FILENAME = 'G:\SSDCACHE\Example.BPE', SIZE = 30 GB);
相关的系统视图:
SELECT * FROM sys.dm_os_buffer_pool_extension_configuration AS a
SELECT * FROM sys.dm_os_buffer_descriptors AS b
注意点:
1. 只能先关闭才能修改;
2. 只能改大不能改小, 想改小必须重启服务, 否则提示: 缓冲池扩展大小必须大于当前内存分配阈值 xxxx MB ;
参考: