Chinaunix首页 | 论坛 | 博客
  • 博客访问: 745579
  • 博文数量: 38
  • 博客积分: 587
  • 博客等级: 中士
  • 技术积分: 579
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-17 14:32
文章存档

2013年(15)

2012年(23)

分类: Mysql/postgreSQL

2012-08-09 22:14:29

  Linux的文件都是以FD描述的,而MySQL要访问表,都会打开相应的数据和索引文件的;有时创建临时文件,
如(1)当操作binlog event事件长度大于binlog_cache_size,就会在tmpdir目录(默认/tmp)下创建临时文件,而这些文件,用ls -al /tmp是无法看到的,只有通过查看MySQL进程打开的文件才可见。(2)如对大表,进行表结构变更,一般都会在数据库所在的目录下创建临时文件的。
查看MySQL进程打开的文件命令:

lsof -p pid 

呵呵,说这么多,就一行命令,晕。。。
示例:
今天对一张大表变更添加字段,用show engine innodb status查看,行到以下信息,创建了临时文件,接着那这个文件大哪儿,用来作啥的呢?
 LOCK table `xxxxxx`.#sql-165_351360'

lsof -p 357 | grep sql-165_351360
mysqld  357 mysql  147uW  REG               8,16  255852544 3221225779 /work/mysql/xxxx/#sql-165_351360.ibd

结果就是在数据库xxxx目录下的。

相反查看某个文件,正在被哪些进程使用呢? 用命令:fuser
参见: http://www.cnblogs.com/yuboyue/archive/2011/07/18/2109838.html


阅读(3522) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~