使用過MySQL的同學,剛開始接觸最多的莫過于MyISAM表引擎了,這種引擎的數(shù)據(jù)庫會分別創(chuàng)建三個文件:表結(jié)構、表索引、表數(shù)據(jù)空間。我們可以將某個數(shù)據(jù)庫目錄直接遷移到其他數(shù)據(jù)庫也可以正常工作。然而當你使用InnoDB的時候,一切都變了。
InnoDB 默認會將所有的數(shù)據(jù)庫InnoDB引擎的表數(shù)據(jù)存儲在一個共享空間中:ibdata1,這樣就感覺不爽,增刪數(shù)據(jù)庫的時候,ibdata1文件不會自動收縮,單個數(shù)據(jù)庫的備份也將成為問題。通常只能將數(shù)據(jù)使用mysqldump 導出,然后再導入解決這個問題。
在MySQL的配置文件[mysqld]部分,增加innodb_file_per_table參數(shù)。
可以修改InnoDB為獨立表空間模式,每個數(shù)據(jù)庫的每個表都會生成一個數(shù)據(jù)空間。
獨立表空間:
優(yōu)點:
1. 每個表都有自已獨立的表空間。
2. 每個表的數(shù)據(jù)和索引都會存在自已的表空間中。
3. 可以實現(xiàn)單表在不同的數(shù)據(jù)庫中移動。
4. 空間可以回收(除drop table操作處,表空不能自已回收)
a) Drop table操作自動回收表空間,如果對于統(tǒng)計分析或是日值表,刪除大量數(shù)據(jù)后可以通過:alter table TableName engine=innodb;回縮不用的空間。
b) 對于使innodb-plugin的Innodb使用turncate table也會使空間收縮。
c) 對于使用獨立表空間的表,不管怎么刪除,表空間的碎片不會太嚴重的影響性能,而且還有機會處理。
缺點:
單表增加過大,如超過100個G。
結(jié)論:
共享表空間在Insert操作上少有優(yōu)勢。其它都沒獨立表空間表現(xiàn)好。當啟用獨立表空間時,請合理調(diào)整一 下:innodb_open_files 。
InnoDB Hot Backup(冷備)的表空間cp不會面對很多無用的copy了。而且利用innodb hot backup及表空間的管理命令可以實現(xiàn)單現(xiàn)移動。
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 引擎優(yōu)化 http://linux.chinaunix.net/techdoc/database/2009/04/28/1109193.shtml
更多文章、技術交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
