table_open_cache 与 table_definition_cache 对MySQL(内存)的影响

1. 现象,内存使用大 首先说一下最近遇到的一个现象,因为分库的缘故,单实例里面的表的数量增加了20倍,总数将近达到10000个。在开发环境明显感觉到执行简单查询都很慢,在processlist里面看到状态 opening table 达到好几秒但数据库并没有什么负载。本能的想到应该要加大 table_open_cache,可是加大后发现MySQL刚启动 RES 就占用了2.5G内存,之前才500-600M的样子。 ...

2017-10-13 · 11 min

table_open_cache 与 table_definition_cache 对MySQL(内存)的影响

1. 现象,内存使用大 首先说一下最近遇到的一个现象,因为分库的缘故,单实例里面的表的数量增加了20倍,总数将近达到10000个。在开发环境明显感觉到执行简单查询都很慢,在processlist里面看到状态 opening table 达到好几秒但数据库并没有什么负载。本能的想到应该要加大 table_open_cache,可是加大后发现MySQL刚启动 RES 就占用了2.5G内存,之前才500-600M的样子。 ...

2017-10-13 · 11 min

MySQL实例阻塞分析一例(线程statistics状态)

1. 现象 某日下午下班后低峰期,现网MySQL一个库突然报出大量慢sql,状态是 statistics,但是过后拿这些sql去执行的时候,实际很快。处于 statistics 状态的线程有个特征:查询的都是视图,但看监控那个时间段并没有明显的update/detele/insert。通过我们的快照程序,去分析当时的 innodb status,发现如下信息: ...

2017-09-23 · 5 min

MySQL实例阻塞分析一例(线程statistics状态)

1. 现象 某日下午下班后低峰期,现网MySQL一个库突然报出大量慢sql,状态是 statistics,但是过后拿这些sql去执行的时候,实际很快。处于 statistics 状态的线程有个特征:查询的都是视图,但看监控那个时间段并没有明显的update/detele/insert。通过我们的快照程序,去分析当时的 innodb status,发现如下信息: ...

2017-09-23 · 5 min

一个简单的数据订阅程序(for DBA)

本程序基于大众点评github项目 binlog2sql 二次开发而来,可以实现对源库的binlog实时接收,并组装成增量sql。 原项目默认是把sql输出到控制台,二次开发后的版本把sql放入redis队列,根据需要由另一个程序消费到目标库,模拟了一个“从库”。 在测试时--stop-never在qa环境没有作用,添加了在 BinLogStreamReader 实例里面加入 blocking=True 来保证源源不断的接受binlog而不中断。 ...

2017-09-05 · 3 min

一个简单的数据订阅程序(for DBA)

本程序基于大众点评github项目 binlog2sql 二次开发而来,可以实现对源库的binlog实时接收,并组装成增量sql。 原项目默认是把sql输出到控制台,二次开发后的版本把sql放入redis队列,根据需要由另一个程序消费到目标库,模拟了一个“从库”。 在测试时--stop-never在qa环境没有作用,添加了在 BinLogStreamReader 实例里面加入 blocking=True 来保证源源不断的接受binlog而不中断。 ...

2017-09-05 · 3 min