天天看點

InnoDB 引擎獨立表空間 innodb_file_per_table

InnoDB 預設會将所有的資料庫InnoDB引擎的表資料存儲在一個共享空間中:ibdata1,這樣就感覺不爽,增删資料庫的時候,ibdata1檔案不會自動收縮,單個資料庫的備份也将成為問題。通常隻能将資料使用mysqldump 導出,然後再導入解決這個問題。

在MySQL的配置檔案[mysqld]部分,增加innodb_file_per_table參數。

可以修改InnoDB為獨立表空間模式,每個資料庫的每個表都會生成一個資料空間。

獨立表空間:

優點:

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

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

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

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

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關閉獨立的表空間

        一個表不能包含超過1000列。

  内部最大鍵長度是3500位元組,但MySQL自己限制這個到1024位元組。

  除了VARCHAR, BLOB和TEXT列,最大行長度稍微小于資料庫頁的一半。即,最大行長度大約8000位元組。LONGBLOB和LONGTEXT列必須小于4GB, 總的行長度,頁包括BLOB和TEXT列,必須小于4GB。InnoDB在行中存儲VARCHAR,BLOB或TEXT列的前768位元組,餘下的存儲的分散的頁中。

雖然InnoDB内部地支援行尺寸大于65535,你不能定義一個包含VARCHAR列的,合并尺寸大于65535的行。

nnoDB日志檔案的合并尺寸必須小于4GB。

最小的表空間尺寸是10MB。最大的表空間尺寸是4,000,000,000個資料庫頁(64TB)。這也是一個表的最大尺寸。

 InnoDB表不支援FULLTEXT索引

     本文轉自yzy121403725 51CTO部落格,原文連結http://blog.51cto.com/lookingdream/1887411:,如需轉載請自行聯系原作者