mysql优化-索引文件和数据文件分目录存储
MyISAM 是MySQL 的默认存储引擎。MyISAM 不支持事务、也不支持外键,其优势是访问的速度快,对事务完整性没有要求或者以SELECT、INSERT 为主的应用基本上都可以使用这个引擎来创建表。
每个MyISAM 在磁盘上存储成3 个文件,其文件名都和表名相同,但扩展名分别是:
-
.frm(存储表定义);
-
.MYD(MYData,存储数据);
-
.MYI (MYIndex,存储索引)。
数据文件和索引文件可以放置在不同的目录,平均分布IO,获得更快的速度。
要指定索引文件和数据文件的路径,需要在创建表的时候通过DATA DIRECTORY 和INDEX DIRECTORY 语句指定,也就是说不同MyISAM 表的索引文件和数据文件可以放置到不同的路径下。文件路径需要是绝对路径,并且具有访问权限。
具体操作步骤(仅限linux操作系统):
首先要创建/home/test/data目录并修改/home/test/index目录的所有者及对应的组:
chown -R mysql:mysql /home/test/data chown -R mysql:mysql /home/test/index CREATE TABLE `test` ( `strative_id` VARCHAR(16) NOT NULL, `date_id` VARCHAR(8) NOT NULL, `qua_id` VARCHAR(4) NOT NULL, `fh` DECIMAL(16,6) DEFAULT NULL, `dl` DECIMAL(16,6) DEFAULT NULL, PRIMARY KEY (`strative_id`,`date_id`,`qua_id`) ) ENGINE=MYISAM DATA DIRECTORY = '/home/test/data' INDEX DIRECTORY= '/home/test/index'; ALTER TABLE D_TF_DATA_AGGREGATION_1 DATA DIRECTORY= '/home/test/data'; ALTER TABLE D_TF_DATA_AGGREGATION_1 INDEX DIRECTORY= '/home/test/index'; show warnings; -- alter操作 -- <INDEX DIRECTORY> option ignored -- alter操作 -- <DATA DIRECTORY> option ignored
— 可见指定DATA DIRECTORY 和INDEX DIRECTORY操作只可以在创建表的时候指定,不可以alter(ALTER TABLE忽略DATA DIRECTORY和INDEX DIRECTORY表选项)。
注:这种可以指定INDEX DIRECTORY 和 DATA DIRECTORY 操作,在当磁盘分区不足的时候,可以将数据文件放在其它的分区上。
注:INNODB 表要是独立表空间(innodb_file_per_table=1)。
注:目前只有5.6才支持单表指定目录,且目录是mysql:mysql。
注: 在Windows中将忽略DATA DIRECTORY和INDEX DIRECTORY选项。
一条评论
添加新评论
- Pingback: mysql优化总结之创建篇