首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定是否有一个用于MySQL的较小的MySQL

问如何确定是否有一个用于MySQL的较小的MySQL
EN

Database Administration用户
提问于 2021-07-30 18:22:42
回答 2查看 125关注 0票数 0

我们有几个MySQL 5.7/Mariadb数据库运行在CentOS上的Ec2实例上。我们当前分配内存给DB的逻辑是基于操作系统上可用的总内存,并将一个百分比分配给MySQL DB。appserver也与DB一起驻留,因此我们必须认识到这一点。我的问题是,如何判断当前内存设置是否足够?我是否在内存方面过度/不足地分配给MySQL DB?不幸的是,我们没有任何第三方UI或性能模式启用,以收集任何指标随着时间的推移。任何帮助都是非常感谢的。

EN

回答 2

Database Administration用户

发布于 2021-07-30 20:20:46

在mysql客户机中运行SHOW ENGINE INNODB STATUS\G。

最后,您将看到缓冲池上的一个部分:

代码语言:javascript
复制
...
----------------------
BUFFER POOL AND MEMORY
----------------------
...
Buffer pool hit rate 997 / 1000
...

这表明,在1000个页面请求中,997个来自已经在缓冲池中的页面。另外三个必须从存储上的表空间读取页面到缓冲池中,然后才能用于满足查询。这是99.7%的命中率。

我试图将这一比率平均保持在99.0%或更高水平。有时,它可能会下降,就像您执行一个需要检查许多行的非典型查询一样。但在大多数情况下,这一比率应该很高。

这就是为什么使用一些监视解决方案很重要,这样您就可以随着时间的推移观察这个比率的值,而不必担心在比率不接近其平均值的时候,您碰巧看到了显示引擎INNODB状态。

为了获得99%的命中率,您不一定需要使缓冲池的大小达到数据的99%。其原因是,在大多数应用程序中,一些小部分数据被请求的频率通常高于其他应用程序。例如,在聊天应用程序中,最近几分钟的数据可能会被读取得比旧的数据多得多。因此,您可以使用比磁盘上的总数据小得多的缓冲池来实现至少99%的平均命中率。

票数 2
EN

Database Administration用户

发布于 2021-09-12 15:41:04

如果应用程序占用了大量内存,那么在获得该百分比之前,必须将“可用”RAM减少那么多。

所以,只要让它变大就行了。

同时。交换说buffer_pool太大了。

规模过小的buffer_pool应该被视为性能问题的一个症状;增加buffer_pool_size不应该是主要的解决方法。

如果存在性能问题,那么查找“最糟糕”的查询(最好是使用缓慢日志),并确定它们是否可以加速(通常通过索引或重新制定)。这既可以提高命中率,也可以提高系统的整体性能。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/297406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档