加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

SQL调优日志--内存问题排查

发布时间:2020-12-12 03:04:12 所属栏目:MySql教程 来源:网络整理
导读:《SQL调优日志--内存问题排查》要点: 本文介绍了SQL调优日志--内存问题排查,希望对您有用。如果有疑问,可以联系我们。 概述 许多系统的性能问题,是由内存导致的.内存不够会导致页面频繁换入换出,IO队列高,进而影响数据库整体性能. 排查 内存对数据库性能

《SQL调优日志--内存问题排查》要点:
本文介绍了SQL调优日志--内存问题排查,希望对您有用。如果有疑问,可以联系我们。

概述

许多系统的性能问题,是由内存导致的.内存不够会导致页面频繁换入换出,IO队列高,进而影响数据库整体性能.

排查

内存对数据库性能非常重要.那么我当呈现问题的时候,我们怎么排查性能问题呢?

存在问题

主要查看2个部门.页生命周期 Page Life Expectancy,和 lazy writer /sec.

SQL调优日志--内存问题排查

页生命周期 的参考值在很久很久以前,很多同学可能看到过,建议值是300s.但是这是基于32位操作系统,最大只能使用4GB内存给出的. Jonathan Kehayias and Ted Krueger 的书A Guide for the Accidental DBA 有给出一个当下的参考值:Buffer Pool / 4 GB * 300 . 当然这值只是一个参考值.如果你发现系统的页生命周期长期低于某个值,或者经常出现剧烈的波动,那阐明内存可能存在问题.

lazy writer /sec 如果长期大于1,就必要关注了.

注意:如果你的系统使用了NUMA.可能会遇到lazy writer /sec 很高,但 Page Life Expectancy异常稳定的情况.这个问题不太常见,暂不详述.

内存分布

判断内存存在问题后,我们必要查看内存的分布.

1.总内存,使用中,可用内存

SQL调优日志--内存问题排查

2.SQL SERVER使用的内存

SQL调优日志--内存问题排查

注意

有的同学可能会遇到,服务器内存使用快满了,但是从上面图中看到的内存使用很少.内存被谁用掉了,是内存泄漏吗?当然不是.原因是SQL SERVER 内存使用可以分为缓冲池和非缓冲池内存.在开启了 锁定内存页 选项后,在任务管理器中只能看到非缓冲池内存部门. 那怎么查看另外一部门缓冲池的内存怎么呢.通过Total server memory 来查看.通过SQL SERVER :Memory Manager Total server memory 来查看

SQL调优日志--内存问题排查

3.非缓冲池内存

SELECT M.type,SUM(M.virtual_memory_reserved_kb) AS VirtualMemoryReservedKB,SUM(M.virtual_memory_committed_kb) AS VirtualMemortCommitedKB,SUM(M.shared_memory_committed_kb) AS SharedMemroyCommittedKB,SUM(M.shared_memory_reserved_kb) AS SharedMemroyReservedKB,SUM(M.multi_pages_kb) AS MultiPagesKB,SUM(M.single_pages_kb) AS SinglePagesKB,SUM(M.multi_pages_kb)+SUM(M.single_pages_kb) AS TotalPagesKBFROM sys.dm_os_memory_clerks MGROUP BY M.typeORDER BY TotalPagesKB DESC

SQL调优日志--内存问题排查

已经依照内存使用排序,找到使用内存最多的部分.分析使用的原因,并解决.

案例

某客户的客户系统使用缓慢,通过上面的排除办法依次排查,最后找到是非缓冲池部分的 MEMORYCLERK_SQLOPTIMIZER占用内存太多造成

办理

sp_configure N'show advanced options',1GOreconfigureGOsp_configure N'optimize for ad hoc workloads',1GOsp_configure N'show advanced options',1GOreconfigureGO

开启上面的选项后,内存仍然没有自动释放.重启SQL SERVER 服务,释放掉已经使用掉的内存.

参考

https://simplesqlserver.com/2013/08/19/fixing-page-life-expectancy-ple/ 详细讲授PLE

《SQL调优日志--内存问题排查》是否对您有启发,欢迎查看更多与《SQL调优日志--内存问题排查》相关教程,学精学透。编程之家PHP学院为您提供精彩教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读