首页 > MySQL > Innodb分表太多或者表分区太多,会导致内存耗尽而宕机

Innodb分表太多或者表分区太多,会导致内存耗尽而宕机

因为线上某个应用表分区太多,直接导致遍历表或者dump数据的时候导致内存耗尽死机。原因是Innodb的数据字典不会释放内存,会将所有表和分区的信息记录在内存当中,当表数量或者分区数到达一定数量之后(经验值:约10万张表或者10万个表分区,占用将近1G大小的内存),会导致内存耗尽。

my.cnf 配置参数: innodb_additional_mem_pool_size

查看数据字典使用多少内存:

SHOW engine innodb STATUSG

Dictionary memory allocated xxxxxxx

针对这种情况,Vadim提供了一个限制数据字典占用内存大小(Limiting InnoDB Data Dictionary)的补丁,用来限制数据字典占用内存的大小,采用LRU淘汰算法,只保留最新使用的表信息。

Related posts:

  1. Inniostat – InnoDB IO Statistics
  2. Innodb如何查看剩余表空间?
  3. InnoDB Plugin 1.0.4 for MySQL 5.1.37
  4. MySQL 5.5 表分区功能增强
  5. google patch v4 for mysql
分类: MySQL 标签:
  1. logchild
    2009年7月1日16:14 | #1

    没遇到过,10万张表,目前远远没到那个数

  2. a
    2009年7月23日20:33 | #2

    10万张表,请教你有多少数据?

  3. robincui
    2009年12月31日01:49 | #4

    呵呵,听jingchun说过一点点,你们的分表确实做的不错,做的够彻底。

  1. 2009年12月26日13:18 | #1
  2. 2011年4月12日12:02 | #2