wun*_*ram 6 performance sql-server-2012 tempdb
我们有一个 SQL Server 2012 Enterprise 设置,具有大量 RAM (256 GB),此时数据库相当小(大约 17 GB)。现在,由于各种编码问题,我们遇到了性能问题,希望通过一些代码审查和优化来解决。与此同时,有一种尝试通过为tempDBLUN获得更快的磁盘来提高性能,例如使用 FusionIO PCIe 闪存卡。
我担心的是,鉴于 SQL Server 仍然有足够的 RAM 可以利用,我们不会看到添加更快的磁盘带来任何真正的性能改进。我认为大多数tempDB操作将发生在 RAM 中,或者发生在磁盘上但最终缓存在 RAM 中(在主机、HBA 或 SAN 上)。
有谁知道当 SQL Server 2012tempDB有足够的 RAM 可供使用时,它是否仍会等待磁盘操作上的 IO 阻塞,或者tempDB我们看到的磁盘活动是否只是为了提供持久性或持久性?
即使你有充足的DRAM,tempdb可能仍然会被使用。
这在几种情况下会发生:
快照隔离:使用此功能可以创建大量的 tempdb 活动。
散列和排序溢出:当优化器创建查询计划时,它会尝试估计运行查询所需的内存总量。在查询运行之前,分配估计的内存。如果结果证明(例如,由于错误的统计)分配的内存太小,那么 SQL Server 会将哈希表和排序缓冲区等运算符溢出到tempdb,即使在查询开始后有足够的内存来满足要求.
或者当然,如果您的查询经过完美调整并且您在没有快照隔离的情况下运行,则可以避免这些影响。但在大多数情况下,tempdb即使在大型 DRAM 系统上,也会出现一定数量的活动。
| 归档时间: |
|
| 查看次数: |
439 次 |
| 最近记录: |