溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

InnoDB 引擎獨(dú)立表空間 innodb_file_per_table

發(fā)布時(shí)間:2020-06-21 08:34:26 來(lái)源:網(wǎng)絡(luò) 閱讀:1204 作者:yzy121403725 欄目:數(shù)據(jù)庫(kù)

InnoDB 默認(rèn)會(huì)將所有的數(shù)據(jù)庫(kù)InnoDB引擎的表數(shù)據(jù)存儲(chǔ)在一個(gè)共享空間中:ibdata1,這樣就感覺(jué)不爽,增刪數(shù)據(jù)庫(kù)的時(shí)候,ibdata1文件不會(huì)自動(dòng)收縮,單個(gè)數(shù)據(jù)庫(kù)的備份也將成為問(wèn)題。通常只能將數(shù)據(jù)使用mysqldump 導(dǎo)出,然后再導(dǎo)入解決這個(gè)問(wèn)題。

在MySQL的配置文件[mysqld]部分,增加innodb_file_per_table參數(shù)。

可以修改InnoDB為獨(dú)立表空間模式,每個(gè)數(shù)據(jù)庫(kù)的每個(gè)表都會(huì)生成一個(gè)數(shù)據(jù)空間。

獨(dú)立表空間:

優(yōu)點(diǎn):

1.  每個(gè)表都有自已獨(dú)立的表空間。
2.  每個(gè)表的數(shù)據(jù)和索引都會(huì)存在自已的表空間中。
3.  可以實(shí)現(xiàn)單表在不同的數(shù)據(jù)庫(kù)中移動(dòng)。
4.  空間可以回收(除drop table操作處,表空不能自已回收)

a)         Drop table操作自動(dòng)回收表空間,如果對(duì)于統(tǒng)計(jì)分析或是日值表,刪除大量數(shù)據(jù)后可以通過(guò):alter table TableName engine=innodb;回縮不用的空間。

b)         對(duì)于使innodb-plugin的Innodb使用turncate table也會(huì)使空間收縮。

c)         對(duì)于使用獨(dú)立表空間的表,不管怎么刪除,表空間的碎片不會(huì)太嚴(yán)重的影響性能,而且還有機(jī)會(huì)處理。

缺點(diǎn):

單表增加過(guò)大,如超過(guò)100個(gè)G。

結(jié)論:

共享表空間在Insert操作上少有優(yōu)勢(shì)。其它都沒(méi)獨(dú)立表空間表現(xiàn)好。當(dāng)啟用獨(dú)立表空間時(shí),請(qǐng)合理調(diào)整一 下:innodb_open_files 。

InnoDB Hot Backup(冷備)的表空間cp不會(huì)面對(duì)很多無(wú)用的copy了。而且利用innodb hot backup及表空間的管理命令可以實(shí)現(xiàn)單現(xiàn)移動(dòng)。

 

1.innodb_file_per_table設(shè)置.開(kāi)啟方法:
在my.cnf中[mysqld]下設(shè)置
innodb_file_per_table=1

2.查看是否開(kāi)啟:
mysql> show variables like ‘%per_table%’;

3.關(guān)閉獨(dú)享表空間
innodb_file_per_table=0關(guān)閉獨(dú)立的表空間
mysql> show variables like ‘%per_table%’;


Innodb表的限制

        一個(gè)表不能包含超過(guò)1000列。

  內(nèi)部最大鍵長(zhǎng)度是3500字節(jié),但MySQL自己限制這個(gè)到1024字節(jié)。

  除了VARCHAR, BLOBTEXT列,最大行長(zhǎng)度稍微小于數(shù)據(jù)庫(kù)頁(yè)的一半。即,最大行長(zhǎng)度大約8000字節(jié)。LONGBLOBLONGTEXT列必須小于4GB, 總的行長(zhǎng)度,頁(yè)包括BLOBTEXT列,必須小于4GBInnoDB在行中存儲(chǔ)VARCHARBLOBTEXT列的前768字節(jié),余下的存儲(chǔ)的分散的頁(yè)中。

雖然InnoDB內(nèi)部地支持行尺寸大于65535,你不能定義一個(gè)包含VARCHAR列的,合并尺寸大于65535的行。

nnoDB日志文件的合并尺寸必須小于4GB

最小的表空間尺寸是10MB。最大的表空間尺寸是4,000,000,000個(gè)數(shù)據(jù)庫(kù)頁(yè)(64TB)。這也是一個(gè)表的最大尺寸。

 InnoDB表不支持FULLTEXT索引


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI