查询mysql 的内存使用_如何查看MySQL内存使用情况

理解MySQL如何使用内存是调优内存以获得最佳性能以及排除意外内存使用情况的关键,例如,当您使用MySQL Server的数量远远超过基于配置设置的预期数量时。本篇文章分享如何通过MySQL语句查看MySQL内存使用情况。

在MySQL历史的早期,了解内存使用情况的细节很困难,并且包含很多猜测。是否有可能某些正在运行的查询需要一个大的临时表或为存储的用户变量分配了很多内存?是否有任何存储过程占用了意外的大量内存?可能是MySQL内存使用过多的原因,但是您不容易发现情况是否如此。

MySQL 5.7(在Performance Schema中添加了内存检测)和MySQL 8.0中,所有这些更改都是默认情况下启用的,因此您几乎可以从任何正在运行的实例中获取此数据。

如果您正在查找当前的内存使用详细信息,则Sys模式可提供出色的视图:

mysql> select event_name,current_alloc from sys.memory_global_by_current_bytes limit 10;

+---------------------------------------------------------------+---------------+

| event_name | current_alloc |

+---------------------------------------------------------------+---------------+

| memory/innodb/buf_buf_pool | 262.12 MiB |

| memory/temptable/physical_ram | 64.00 MiB |

| memory/performance_schema/events_statements_summary_by_digest | 39.67 MiB |

| memory/sql/TABLE | 33.32 MiB |

| memory/innodb/ut0link_buf | 24.00 MiB |

| memory/innodb/lock0lock | 20.51 MiB |

| memory/innodb/memory | 17.79 MiB |

| memory/innodb/buf0dblwr | 17.08 MiB |

| memory/innodb/ut0new | 16.08 MiB |

| memory/performance_schema/events_statements_history_long | 13.89 MiB |

+-------------------------------------

该视图显示了整体上当前分配的内存。您还可以通过查看来自不同主机的连接分配的内存来进一步深入研究:

mysql> select host,current_allocated from memory_by_host_by_current_bytes;

+-------------------------------+-------------------+

| host | current_allocated |

+-------------------------------+-------------------+

| localhost | 1.19 GiB |

| background | 101.28 MiB |

| li1317-164.members.linode.com | 49.61 MiB |

| li1319-234.members.linode.com | 27.90 MiB |

| li1316-24.members.linode.com | 27.00 MiB |

+-------------------------------+-------------------+

5 rows in set (0.02 sec)

甚至通过给定的thread_id检查分配,这对于诊断内存密集型事务或查询非常有帮助:

mysql> select thread_id,user,current_allocated from memory_by_thread_by_current_bytes limit 5;

+-----------+------------------------------------+-------------------+

| thread_id | user | current_allocated |

+-----------+------------------------------------+-------------------+

| 44 | innodb/srv_worker_thread | 1.99 MiB |

| 48 | innodb/srv_worker_thread | 1.16 MiB |

| 54322 | root@localhost | 1.10 MiB |

| 46 | innodb/srv_worker_thread | 777.29 KiB |

| 43881 | app1@li1317-164.members.linode.com | 274.84 KiB |

+-----------+------------------------------------+-------------------+

5 rows in set (0.43 sec)

以上就是如何通过MySQL语句查看MySQL内存使用情况全部内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值