早就说了连接数别太多呀

2023年 8月 15日 50.7k 0

    本次场景是MySQL问题,有人问我监控显示,表缓存使用率99%,当前为100.0%。这是为什么?

    这个需要执行下面的命令来检查。可以看到参数table_open_cache定义了缓存4000个,实际达到的Open_tables是4000.这两个一个是variable,另外一个是状态status

    

一般来说,连接数据库以后use database以后会打开表(结构)缓存,Opened_tables(当前会话)新会话是0.use某个database以后,这个值会增加,目前是从0变到212

   

   有了这个认识以后,那么假设连接会话对相应的database进行use的话,那么缓存的表就是连接数乘以表的数量。只要关注连接数多的user以及他对应的database就行。

最多的连接用户分别是15和20,对应的表的数量分别是89和136.所以两个加起来基本是就是4000左右的样子。

其实数据库的连接数不是越多越好,很多都是闲置的浪费。其实数据库的连接数适当就好。(SQL质量低下,依靠连接数多是不能彻底解决的)。当然这里可以调整参数比如4000改到40000,让他多缓存一点。

案例主要还是说明他的原理。也告诉我们如果连接数很多,那么表的数量就不能多。通常MySQL的一个database下我个人建议不要超过50个表。

如果有人说我业务复杂要上千个表呢?那么你的场景不适合MySQL。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论