淺析mysql 共用資料表空間與獨享資料表空間以及他們之間的轉化

來源:互聯網
上載者:User

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資料目錄。
 
所以在做資料的移植以及備份時,一定要注意資料檔案的完整性.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.