您的位置:首页 > 其它

关于innodb文件结构

2010-01-07 18:32 495 查看
Innodb使用一个虚拟文件系统-表空间(tablespace)来存储数据表和索引,用户同时可以通过制定innodb_file_per_table为每一个innnodb数据表分别创建一个表空间文件。在设置了这个选项并重新启动MySQL服务器之后,这个选项只对新建的InnoDB数据表起作用,此前创建的InnoDB数据表仍然将集中存储在原来的表空间中,它被称为主空间或者主表空间,此后关于新表的所有数据和所有索引都会存储在$datadir/databasename/tablename.ibd文件中。

与以前只有一个表空间文件的做法相比,这一改进带来了许多的好处。使用单表空间的做法优势在于当使用主表空间的时候,因为主表空间是一个封闭的文件系统,它的大小只增不减,使用单表空间,当执行drop table命令时会立刻释放掉该表所占据的空间。

下面是我的数据库德文件结构/data/mysql_3306

ibdata

ibdata1(1.0G)

ibdata2(1.0G)

iblogs

ib_logfile0(1.0G)

ib_logfile1(1.0G)

var

err.log

fb-bin.000001......fb-bin.000020

fb-bin.index

mysql(table name)

task(table name)

test(table name)

user_born.frm

user_born.ibd

user_born.TRG

user_born_before_insert.TRN

......

TJSJHL196-139.opi.com.err

TJSJHL196-139-slow.log

frm文件
,存储数据表的框架结构,文件名与表名相同,每个表对应一个同名frm文件,与操作系统和存储引擎无关,即不管MySQL运行在何种操作系统上,使用何种存储引擎,都有这个文件。

ibd文件,ibd文件:单表表空间文件,每个表使用一个表空间文件(file per table),存放用户数据库表数据和索引。InnoDB数据库文件(即InnoDB文件集,ib-file
set),该文件一般存在在mysql的数据目录下,如:ibdata1、ibdata2等系统表空间文件,存储InnoDB系统信息和用户数据库表数据
和索引,所有表共用。

TRG文件
,与触发器有关系,内容保存的是触发器的定义,如下所示:

TYPE=TRIGGERS

triggers='CREATE DEFINER=`root`@`localhost` trigger user_before_insert before insert on user for each row begin insert into user_update values(new.id,new.name,CURTIME());end' 'C

REATE DEFINER=`root`@`localhost` trigger user_before_update before update on user for each row begin insert into user_update values(new.id,new.name,CURTIME());end'

sql_modes=0 0

definers='root@localhost' 'root@localhost'

引用“22.5.7:


Where are triggers stored?


Triggers for a table are currently stored in
.TRG

files, with one such file one per
table.



地址:http://dev.mysql.com/doc/refman/5.0/en/faqs.html

TRN文件
,与触发器有关系,但是内容保存的不是触发器的内容,而是如下所示:

TYPE=TRIGGERNAME

trigger_table=user
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: