關於共享表空間和獨立表空間的知識總結!
【共享表空間/系統表空間】
Innodb 將存儲的數據按照表空間(tablespace)進行存放,默認配置下,會有一個初始大小10M,名為:ibdata1的文件,這就是默認的表空間文件。
配置文件中的設置:
1.默認設置
innodb_data_file_path = ibdata1:10M:autoextend
生成文件默認是在data目錄下。
2.多路徑設置
innodb_data_file_path = /data1/db1/ibdata1:100M:autoextend; /data2/db2/ibdata2:100M:autoextend
放在不同的磁盤,可以平均磁盤負載,提高數據庫性能。
3.記錄內容
記錄所有基於Innodb存儲引擎的表的數據。
【獨立表空間】
1.配置
mysql> show variables like 'innodb_file_per%'\G;
*************************** 1. row ***************************
Variable_name: innodb_file_per_table
Value: ON
注意:
MySQL5.6.7之后默認開啟
2.位置
在對應的表所在的目錄,生成:表名.ibd文件
[root@monitor wb]# pwd
/mysqlData/con1/data/wb
[root@monitor wb]# ll -h u1.*
-rw-rw----. 1 mysql mysql 8.5K Feb 28 20:36 u1.frm
-rw-rw----. 1 mysql mysql 96K Feb 28 20:37
u1.ibd
3.記錄內容
獨立的表空間,僅存儲該表的:數據,索引和插入緩沖BITMAP等信息。
其余信息仍存儲在默認表空間。
【相關知識點說明】
1.啟用innodb_file_per_table后,每張表的表空間只存放自己的:數據,索引和插入緩沖BITMAP頁。其它信息仍放在默認表空間。
其它信息如:回滾(undo)信息、插入緩沖索引頁、系統的事物信息、二次寫緩沖(Double write buffer)等。
2.file_per_table的特點
可以靈活選擇:row format和file format。對於 數據壓縮、truncate table操作會更快寫。
回收空間可以再次被利用,相反默認表空間不會收縮空間。
MySQL Enterprise Backu對於擁有獨立表空間的表,更靈活。表能從備份中單獨出來,適合備份不是太頻繁的表。
3.表空間:從邏輯存儲結構看,所有數據都被邏輯地存放在一個空間中,稱之為表空間(tablespace)
4.共享表空間大小不會自動收縮。
