返回顶部
首页 > 资讯 > 数据库 >MySQL生产库内存异常增高怎么排查
  • 702
分享到

MySQL生产库内存异常增高怎么排查

2023-06-29 23:06:18 702人浏览 独家记忆
摘要

这篇“MySQL生产库内存异常增高怎么排查”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Mysql生产库内存异常增高怎么排查

这篇“MySQL生产库内存异常增高怎么排查”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Mysql生产库内存异常增高怎么排查”文章吧。

修改perfORMance_schema

因为公司生产环境使用的阿里云RDS,修改参数相对方便,performance_schema默认为0,此次修改为1。修改之后提交参数,数据库会进行重启,建议在业务低峰进行。

打开内存监控

登录mysql数据库,执行如下sql,打开内存监控。

update performance_schema.setup_instruments set enabled = 'yes' where name like 'memory%';

打开之后验证一下。

select * from performance_schema.setup_instruments where name like 'memory%innodb%' limit 5;

**注意:**该命令是在线打开内存统计,所以只会统计打开后新增的内存对象,打开前的内存对象不会统计,建议您打开后等待一段时间再执行后续步骤,便于找出内存使用高的线程

查找内存消耗

统计事件消耗内存

select event_name,       SUM_NUMBER_OF_BYTES_ALLOCfrom performance_schema.memory_summary_global_by_event_nameorder by SUM_NUMBER_OF_BYTES_ALLOC descLIMIT 10;+---------------------------------------+-------------------------------------+| event_name                            | SUM_NUMBER_OF_BYTES_ALLOC           |+---------------------------------------+-------------------------------------+| memory/sql/Filesort_buffer::sort_keys | 763523904056                        || memory/memory/HP_PTRS                 | 118017336096                        || memory/sql/thd::main_mem_root         | 114026214600                        || memory/mysys/io_CACHE                 | 59723548888                         || memory/sql/QUICK_RANGE_SELECT::alloc  | 14381459680                         || memory/sql/test_quick_select          | 12859304736                         || memory/innodb/mem0mem                 | 7607681148                          || memory/sql/String::value              | 1405409537                          || memory/sql/TABLE                      | 1117918354                          || memory/innodb/btr0sea                 | 984013872                           |+---------------------------------------+-------------------------------------+

可以看到内存消耗最高的event是Filesort_buffer,根据经验,这个应该是排序有关。

统计线程消耗内存

select thread_id,       event_name,       SUM_NUMBER_OF_BYTES_ALLOCfrom performance_schema.memory_summary_by_thread_by_event_nameorder by SUM_NUMBER_OF_BYTES_ALLOC desclimit 10;+---------------------+---------------------------------------+-------------------------------------+| thread_id           | event_name                            | SUM_NUMBER_OF_BYTES_ALLOC           |+---------------------+---------------------------------------+-------------------------------------+| 105                 | memory/memory/HP_PTRS                 | 69680198792                         || 183                 | memory/sql/Filesort_buffer::sort_keys | 49210098808                         || 154                 | memory/sql/Filesort_buffer::sort_keys | 43304339072                         || 217                 | memory/sql/Filesort_buffer::sort_keys | 37752275360                         || 2773                | memory/sql/Filesort_buffer::sort_keys | 31460644712                         || 218                 | memory/sql/Filesort_buffer::sort_keys | 31128994280                         || 2331                | memory/sql/Filesort_buffer::sort_keys | 28763981248                         || 106                 | memory/memory/HP_PTRS                 | 27938197584                         || 191                 | memory/sql/Filesort_buffer::sort_keys | 27701610224                         || 179                 | memory/sql/Filesort_buffer::sort_keys | 25624723968                         |+---------------------+---------------------------------------+-------------------------------------+

可以看到内存消耗多的线程都跟Filesort_buffer相关。

定位具体SQL

根据前边我们查到的thread_id日志里查找对应的SQL,阿里云RDS审计日志相对还是比较强大的。我们直接根据thread_id直接检索。

MySQL生产库内存异常增高怎么排查

我们在日志里看到大量这样的SQL,扫描行数在几千到几万不等。虽然每次查询时间并不长,大概在几十到几百毫秒,但是并发量很大。

以上就是关于“MySQL生产库内存异常增高怎么排查”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL生产库内存异常增高怎么排查

本文链接: https://lsjlt.com/news/326737.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySQL生产库内存异常增高怎么排查
    这篇“MySQL生产库内存异常增高怎么排查”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySQL生产库内存异常增高怎么排查...
    99+
    2023-06-29
  • 分享MySQL生产库内存异常增高的排查过程
    目录修改performance_schema打开内存监控查找内存消耗统计事件消耗内存统计线程消耗内存定位具体SQL    近期频繁收到一个My...
    99+
    2024-04-02
  • NET中怎么排查内存持续增长问题
    这期内容当中小编将会给大家带来有关NET中怎么排查内存持续增长问题,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。    1、服务端代码,只提供GetFile操作,返回相对较大...
    99+
    2023-06-17
  • 怎么给MySQL数据库增加线程内存监控
    这篇文章主要讲解了“怎么给MySQL数据库增加线程内存监控”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么给MySQL数据库增加线程内存监控”吧!使用My...
    99+
    2024-04-02
  • Oracle数据库怎么查看一周内的归档日志产生情况
    这篇文章主要讲解了“Oracle数据库怎么查看一周内的归档日志产生情况”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Oracle数据库怎么查看一周内的归档日...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作