MySQL 独立表空间 VS 共享表空间

950阅读 0评论2014-08-29 fathermotherson
分类:Mysql/postgreSQL

一,空间 
1,共享表空间最大的问题就是空间永不回缩,注意,是永不。 
不管是 drop table; truncate table; 或者是 OPTIMIZE TABLE tb; ALTER TABLE tb ENGINE=InnoDB; 已经占用的磁盘空间都不会释放。 
一旦存储空间达到阀值,就不可能使用常规手段让空间回缩了,这意味着实例很可能要被迁移。而对于独立表空间,可以选择的路会很多。对于非自增主键的表,使用OPTIMIZE TABLE有可能就释放出10%-30%的空间。 
2,但是就利用率来来说,共享表空间的free space(不管是没有被使用还是已经被删除)可以被所有表利用,利用率更高 
3,5.5 独立表空间可以使用innodb_file_format=Barracuda,ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8进行数据压缩,用cpu换空间,压缩比可以达到30%-40%

二,性能 
1,’Innodb_file_per_table causes each file to be fsynced separately, which means writes to multiple tables can’t be combined into a single I/O operation. This may require InnoDB to perform a higher total number of fsync() operations.’--High performance MYSQL 
2,独立表空间在5.6中可以指定表文件存放位置,可以将冷热数据放置到不同性能的存储设备上,如FusionIO,SSD,SAS,SATA以取得更好的性能。

三,数据恢复 
独立表空间更利于单表的物理备份恢复。5.5以上版本可能因为tablespace id不一致而导致恢复失败。在5.6.6以上版本可支持FLUSH TABLES tbl_name [, tbl_name] … FOR EXPORT语句来进行表空间的导入导出的数据一致性。

四,打开文件 
独立表空间的文件数量会多一倍,因为除了frm文件还有ibd文件。 
需要合理设置 mysql用户在系统中的文件描述符限制,以及innodb_open_files。



转自:
做zabbix 数据库优化的时候了解了一下这个东西
上一篇:linux 文件的时间 以及find命令的相关应用
下一篇:创建swap