InnoDB 引擎獨立表空間 innodb_file_per_table

InnoDB 引擎獨立表空間 innodb_file_per_table

使用過MySQL的同窗,剛開始接觸最多的莫過於MyISAM表引擎了,這種引擎的數據庫會分別建立三個文件:表結構、表索引、表數據空間。咱們能夠將某個數據庫目錄直接遷移到其餘數據庫也能夠正常工做。然而當你使用InnoDB的時候,一切都變了。html

InnoDB 默認會將全部的數據庫InnoDB引擎的表數據存儲在一個共享空間中:ibdata1,這樣就感受不爽,增刪數據庫的時候,ibdata1文件不會自動收縮,單個數據庫的備份也將成爲問題。一般只能將數據使用mysqldump 導出,而後再導入解決這個問題。mysql

在MySQL的配置文件[mysqld]部分,增長innodb_file_per_table參數。linux

能夠修改InnoDB爲獨立表空間模式,每一個數據庫的每一個表都會生成一個數據空間。sql

獨立表空間:數據庫

優勢:ide

1. 每一個表都有自已獨立的表空間。
2. 每一個表的數據和索引都會存在自已的表空間中。
3. 能夠實現單表在不一樣的數據庫中移動。
4. 空間能夠回收(除drop table操做處,表空不能自已回收)post

a) Drop table操做自動回收表空間,若是對於統計分析或是日值表,刪除大量數據後能夠經過:alter table TableName engine=innodb;回縮不用的空間。性能

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

c) 對於使用獨立表空間的表,無論怎麼刪除,表空間的碎片不會太嚴重的影響性能,並且還有機會處理。優化

缺點:

單表增長過大,如超過100個G。

結論:

共享表空間在Insert操做上少有優點。其它都沒獨立表空間表現好。當啓用獨立表空間時,請合理調整一 下:innodb_open_files 。

InnoDB Hot Backup(冷備)的表空間cp不會面對不少無用的copy了。並且利用innodb hot backup及表空間的管理命令能夠實現單現移動。

1.innodb_file_per_table設置.開啓方法:
在my.cnf中[mysqld]下設置
innodb_file_per_table=1

2.查看是否開啓:
mysql> show variables like ‘%per_table%’;

3.關閉獨享表空間
innodb_file_per_table=0關閉獨立的表空間
mysql> show variables like ‘%per_table%’;

更多Mysql Innodb 引擎優化 http://linux.chinaunix.net/techdoc/database/2009/04/28/1109193.shtml

文章乃參考、轉載其餘博客所得,僅供本身學習做筆記使用!!!

相關文章
相關標籤/搜索