MYSQL数据库的数据存储⽂件
MySQL数据库会在data⽬录下⾯简历⼀个以数据库为名的⽂件夹,⽤来存储数据库中的表⽂件数据。不同的数据库引擎,每个表的扩展名也不⼀样 ,例如: MyISAM⽤“.MYD”作为扩展名,Innodb⽤“.ibd”,Archive ⽤“.arc”,CSV ⽤“.csv
.frm ⽂件
⽆论是那种存储引擎,创建表之后就⼀定会⽣成⼀个以表明命名的’.frm’⽂件。frm⽂件主要存放与表相关的数据信息,主要包括表结构的定义信 息。当数据库崩溃时,⽤户可以通过frm⽂件来恢复数据表结构。
.myd ⽂件
“.myd”⽂件是MyISAM存储引擎专⽤,存放MyISAM表的数据。每⼀个MyISAM表都会有⼀个“.myd”⽂件与之对应,同样存放于所属数据库的⽂件夹下, 和“.frm”⽂件在⼀起。
.myi ⽂件
“.myi”⽂件也是专属于MyISAM存储引擎的,主要存放MyISAM表的索引相关信息。对于MyISAM存储来
说,可以被cache 的内容主要就是来源 于“.myi”⽂件中。 每⼀个MyISAM表对应⼀个“.myi”⽂件,存放于位置和“.frm”以及“.myd”⼀样。
.ibd ⽂件与 .ibdata ⽂件
这两种⽂件都是存放Innodb数据的⽂件,之所以有两种⽂件来存放Innodb的数据(包括索引),是因为Innodb的数据存储⽅式能够通过配置来决 定是使⽤共享 表空间存放存储数据,还是独享表空间存放存储数据。独享表空间存储⽅式使⽤“.ibd”⽂件来存放数据,且每个表⼀个“.ibd”⽂件 ,⽂件存放在和MyISAM数据相 同的位置。如果选⽤共享存储表空间来存放数据,则会使⽤ibdata⽂件来存放,所有表共同使⽤⼀个(或者多个, 可⾃⾏配置)ibdata⽂件。
ibdata⽂件可以通过 innodb_data_home_dir(数据存放⽬录)和 innodb_data_file_path (配置每个⽂件的名称) 两个参数配置组成。
innidb_data_file_path 中可以⼀次配置多个 ibdata ⽂件 #innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend 配置⽅式 。
共享表空间以及独占表空间都是针对数据的储存⽅式⽽⾔的。
共享表空间:某⼀个数据库的所有表数据,索引⽂件全部放在⼀个⽂件中。
独占表空间:每⼀个表都将会⽣成以独⽴的⽂件⽅式来进⾏储存,每⼀个表都有⼀个 .frm 表描述⽂件,还有⼀个 .idb ⽂件。其中这个⽂件包括了单独⼀个表的数据内容以及索引内容。
两者对⽐
(1)共享表空间:
优点:可以放表空间分成多个⽂件存放到各个磁盘上。数据和⽂件放在⼀起⽅便管理。
缺点:所有的数据和索引存放到⼀个⽂件中,多个表及索引在表空间中混合储存,这样对于⼀个表做了⼤量删除操作后表空间中将会有⼤量的空隙,特别是对于统计分析,⽇值系统这类应⽤最不适合⽤共享表空间。
(2)独占表空间:
优点:
1. 每个表都有⾃⼰独⽴的表空间。
2. 每个表的数据和索引都会存在⾃⼰的表空间中。
mysql下载下来是一个文件夹3. 可以实现单表在不同的数据库中移动。
4. 空间可以回收。
a) Drop table 操作⾃动回收表空间,如果对于统计分析或是⽇值表,删除⼤量数据后可以通过:altertable TableName engine = innodb;回收不⽤的空间。
b) 对于使⽤独占表空间的表,不管怎么删除,表空间的碎⽚不会太严重的影响性能,⽽且还有机会处理。
缺点:单表增加过⼤,如超100G。相⽐较之下,使⽤独占表空间的效率以及性能会差⼀点
共享表空间和独占表空间之间的转换
show variables like “innodb_file_per_table”; ( 查看⽅式 )
ON代表独占表空间管理,OFF代表共享表空间管理;
修改数据库的表空间管理⽅式 修改 innodb_file_per_table 的参数值即可,但是修改不能影响之前已经使⽤过的共享表空间和独占表空间;
innodb_file_per_table = 1 为使⽤独占表空间
innodb_file_per_table = 0 为使⽤共享表空间
innodb_file_per_table在mysql的配置⽂件⾥⾯修改
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论