mysql共享表空間和獨立表空間 轉

2022-08-31 22:36:23 字數 2334 閱讀 4641

innodb表的資料結構

innodb這種引擎,與myisam引擎的區別很大。特別是它的資料儲存格式等.

對於innodb的資料結構,首先要解決兩個概念性的問題: 共享表空間以及獨佔表空間。

什麼是共享表空間和獨佔表空間

共享表空間以及獨佔表空間都是針對資料的儲存方式而言的。

共享表空間:  某乙個資料庫的所有的表資料,索引檔案全部放在乙個檔案中,預設這個共享表空間的檔案路徑在data目錄下。 預設的檔名為:ibdata1  初始化為10m。

獨佔表空間:  每乙個表都將會生成以獨立的檔案方式來進行儲存,每乙個表都有乙個.frm表描述檔案,還有乙個.ibd檔案。 其中這個檔案包括了單獨乙個表的資料內容以及索引內容,預設情況下它的儲存位置也是在表的位置之中。

兩者之間的優缺點

共享表空間:

優點:可以放表空間分成多個檔案存放到各個磁碟上(表空間檔案大小不受表大小的限制,如乙個表可以分布在不同步的檔案上)。資料和檔案放在一起方便管理。

缺點:所有的資料和索引存放到乙個檔案中意味著將有乙個很常大的檔案,雖然可以把乙個大檔案分成多個小檔案,但是多個表及索引在表空間中混合儲存,這樣對於乙個表做了大量刪除操作後表空間中將會有大量的空隙,特別是對於統計分析,日值系統這類應用最不適合用共享表空間。

獨立表空間:

在配置檔案(my.cnf)中設定: innodb_file_per_table

優點:1.  每個表都有自已獨立的表空間。

2.  每個表的資料和索引都會存在自已的表空間中。

3.  可以實現單錶在不同的資料庫中移動。

4.  空間可以**(除drop table操作處,表空不能自已**)

a)         drop table操作自動**表空間,如果對於統計分析或是日值表,刪除大量資料後可以通過:alter table tablename engine=innodb;回縮不用的空間。

b)         對於使innodb-plugin的innodb使用turncate table也會使空間收縮。

c)         對於使用獨立表空間的表,不管怎麼刪除,表空間的碎片不會太嚴重的影響效能,而且還有機會處理。

缺點:單錶增加過大,如超過100個g。

相比較之下,使用獨佔表空間的效率以及效能會更高一點。

共享表空間以及獨佔表空間之間的轉化

innodb_file_per_table 通過這個引數來實現的轉化,如果為off說明所使用的是獨佔表空間【預設情況下,所使用的表空間為共享表空間】

innodb_file_per_table值來進行修改即可,但是對於之前使用過的共享表空間則不會影響,除非手動的去進行修改或者是

innodb_file_per_table=1 為使用獨佔表空間

innodb_file_per_table=0 為使用共享表空間

修改獨佔空表空間的資料儲存位置

innodb_data_home_dir = "c:\mysql\data\"

innodb_log_group_home_dir = "c:\mysql\data\"

innodb_data_file_path=ibdata1:10m:autoextend

innodb_file_per_table=1

引數說明:

這個設定配置乙個可擴充套件大小的尺寸為10mb的單獨檔案,名為ibdata1。沒有給出檔案的位置,所以預設的是在mysql的資料目錄內。【對資料來進行初始化的設定】

innodb_data_home_dir              代表為資料庫檔案所存放的目錄

innodb_log_group_home_dir       為日誌存放目錄

innodb_file_per_table               是否使用共享以及獨佔表空間來

以上的幾個引數必須在一起加入。

對於引數一些注意的地方

innodb不建立目錄,所以在啟動伺服器之前請確認」所配置的路徑目錄」的確存在。這對你配置的任何日誌檔案目錄來說也是真實的。使用unix或dos的mkdir命令來建立任何必需的目錄。

通過把innodb_data_home_dir的值原原本本地部署到資料檔名,並在需要的地方新增斜槓或反斜槓,innodb為每個資料檔案形成目錄路徑。

如果innodb_data_home_dir選項根本沒有在my.cnf中提到,預設值是「dot」目錄 ./,這意思是mysql資料目錄。

所以在做資料的移植以及備份時,一定要注意資料檔案的完整性.

**---

innodb這種引擎,與myisam引擎的區別很大。特別是它的資料儲存格式等.

Mysql InnoDB 共享表空間和獨立表空間

前言 學習mysql的時候總是習慣性的和oracle資料庫進行比較。在學習mysql innodb的儲存結構的時候也免不了跟oracle進行比較。oracle的資料儲存有表空間 段 區 塊 資料檔案 mysql innodb的儲存管理也類似,但是mysql增加了乙個共享表空間和獨立表空間的概念 一 ...

共享表空間到獨立表空間的轉化流程

遷移步驟1 show variables like per table 遷移步驟2 service mysqld stop 遷移步驟3 修改配置檔案 innodb file per table 1 遷移步驟4 mysqldump 備份需要的資料 mysqldump u p all databases...

檢查使用共享表空間的表

最近接手一台新的資料庫機器,發現某些庫某些表沒有ibd檔案只有frm檔案,而ibdata1檔案一共有20g 估計是使用了共享表空間 存放在ibdata1檔案裡 於是寫了乙個指令碼,檢查例項下哪些庫哪些表使用了共享表空間,原理是如果有frm檔案而沒有ibd檔案就認為是使用了共享表空間 bin bash...