一,空间
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 数据库优化的时候了解了一下这个东西