whd*_*whd 5 performance sql-server memory page-life-expectancy
我有一个占用 500gb 的数据库,我注意到即使我有 100gb 的 RAM,我的 ple 也很低。我在谷歌中搜索过原因,我发现了一些有趣的查询。我有一个在非常大的表上运行的查询,即使它使用聚集索引,它也会导致 ple 删除。我在查询前后以及查询完成后检查了缓冲池中的内容,看起来 DB 必须为我的查询中使用的索引释放一些空间,并且在查询旧索引加载到缓冲池之后。我的问题是 DB 应该有多少 RAM 内存,我如何计算它,它是否应该是让我一次将所有使用的索引保存在内存中的数量?或者我应该减少保存在表中的数据,以便索引会更小?
每次扫描大索引(或大表,如果您愿意)时,都必须将数据从磁盘带到内存。发生这种情况时,如果缓冲池正在保存来自其他对象的数据并且没有足够的可用空间来容纳您从磁盘读取的页面,则必须丢弃某些内容。
低 PLE 意味着此过程发生得太频繁,从而使您的缓冲池崩溃并使您的 I/O 子系统不堪重负。
一些改进方法:
active=true或类似的条件)进行过滤,则过滤索引可能有助于减小索引的大小。这对应用程序也有一些影响(一些 SET 选项限制使其工作)。ROW/PAGE压缩可以成为减少内存消耗的一种方式。您将需要企业版,并且必须放弃一些 CPU,但对于大型对象而言,这通常是值得的。(n)charover(n)varchar或intwhentinyint就足够了,不仅会浪费磁盘空间,还会浪费缓冲池空间。这包括字符和数字数据类型:确保为数据列使用正确的类型/大小/精度/比例。| 归档时间: |
|
| 查看次数: |
16535 次 |
| 最近记录: |