您的当前位置:首页正文

MySQL内存不释放

2020-11-09 来源:个人技术集锦

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 连接了一下,并进行了一次查询操作 (root:NJ-245:Thu Apr 24 16:38:38 2014)[information_schema] select count(*) from CLIENT_STATISTICS; +----+ | count(*) | +----+ | 5 | +----+ 1 row i

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入

  连接了一下,并进行了一次查询操作

  (root:NJ-245:Thu Apr 24 16:38:38 2014)[information_schema]> select count(*) from CLIENT_STATISTICS;

  +----+

  | count(*) |

  +----+

  | 5 |

  +----+

  1 row in set (0.01 sec)

  发现数据有增长,再次进行几次查询,发现每次查询都会有增长,这个正常现象么?我修改了下主机名进行了再次查询,发现表数据不再增长。

  修改方法:主机名需要小于16字节。

  目前在5.5和5.6版本上进行了测试,发现这个表数据为空,因此这个问题可能是在5.0版本上面的一个BUG.

  总结:

  本次问题现象主要是:内存异常被MySQL占用不释放并持续上涨,更换过程序和数据库服务器仍没有效果,服务器数据量很小,Innodb Buffer空闲很大。

  问题原因:由于数据库自身的统计数据表information_schema.CLIENT_STATISTICS 数据量过大导致内存占用,CLIENT_STATISTICS是一张内存表。

  问题处理方法:由于CLIENT_STATISTICS表里面的Host列是16个字节的,因此如果主机名过长,会导致客户端每一次的操作都会在表里面新增一条数据,无论操作是否成功。因此只需要修改连接的主机名不要超过16位就不会导致内存占用不释放的问题。

  思考:修改了默认的东西,需要在小部分服务器上进行测试,并详细记录修改后的异常,用于对比不同服务器之间的差别。

  延伸:

  CLIENT_STATISTICS 用于统计客户端连接,目前5.5、5.6以及Maria已经将client字段升级为64个字节,且该统计功能默认关闭,所以如果大家有统计需要,一定要记得主机名不能大于64个字节!

[1] [2]

显示全文