數據庫表空間數據庫
獨立表空間spa
在MySQL 5.6 中引入獨立表空間的概念,啓用獨立表空間後,每一個表將生成獨立的文件來進行存儲。code
建立表時能夠指定表存放的文件路徑
blog
##首選須要確保innodb_file_per_table開啓: show variables like 'innodb_file_per_table'; ##建立表時指定目錄 CREATE TABLE t1 (c1 INT PRIMARY KEY) DATA DIRECTORY = '/remote/directory';
共享表空間優缺點索引
Innodb的全部數據保存在一個單獨的表空間裏面,共享表空間能夠由多個文件組成,當表使用共享表空間時,表數據能夠分佈在多個文件中,從而不受Innodb單表不超過64TB的限制。 默認的共享表空間的文件路徑在data目錄下,默認文件名爲ibdata1,初始化爲10M。 優勢: 能夠放表空間分紅多個文件存放到各個磁盤上,沒有單表不超過64TB的限制。 缺點: 因爲多表共用一個共享表空間,當某些表進行大量刪除後,共享表空間存在大量碎片,但MySQL暫未提供對共享表空間收縮的方法。
獨立表空間優缺點rem
經過innodb_file_per_table參數將innodb表的數據和索引存放到其本身的表空間中,再也不使用共享表空間,獨立表空間的默認目錄爲innodb_data_file 優勢: 1、 每一個表有本身獨立的表空間,數據和索引存放到其獨立的表空間中。 2、能夠輕鬆實現表在不一樣數據庫之間移動 3、DROP TABLE後,表使用的空間當即被釋放 4、當表中數據被大量刪除後,可使用alter table TableName engine=innodb;來進行收縮 5、表空間存在碎片時不會影響其餘表的使用。 缺點: 1、使用獨立表空間後,沒法再將表數據分散到不一樣的多個文件中,若是單個存儲沒法提供該表所需的所有空間時,沒法經過增長新存儲來解決 2、innodb_file_per_table開啓後,不會影響已經使用共享表空間的表。 3、單表數據較大時,致使其對於的數據文件過大而不利於維護