日期:2014-05-16  浏览次数:20678 次

linux清除mysql占用cache
在linux内部将cache分为2种:
1、write/read cache
2、mmap
  http://blog.chinaunix.net/uid-26669729-id-3077015.html

通常一个文件被映射到内存后,就会一直占用,直到文件句柄关闭才会释放
我们调用drop cache会释放1,但是2是释放不了的。

# drop cache http://www.linuxfly.org/post/320/
1、执行sync:将所有未写的系统缓冲区写到磁盘中
2、echo 3 > /proc/sys/vm/drop_caches:清除cache
   1: 清除 pagecache
   2: 清除 dentries and inodes
   3: 清除 pagecache, dentries and inodes


mysql
#
表空间占用的cache, 先flush table,然后drop cache完成操作
   flush table:关闭所有已打开的表(包括未提交事务正在使用的表)
            并且flush query cache(不是reset)
  但是如果是Idbdata 共享表空间只能重启数据库

#
binlog占用的cache,先flush logs,然后drop cache完成操作

#
ibdata占用的cache只能重启数据库



https://github.com/caisonglu/cachemaster/blob/master/cachemaster.c
这个工具能查看当前的文件/目录 使用了多少cache 。