mysql的填充因子_SQL SERVER中,什么是填充因子?
滿意答案
xiafuqiang
推薦于 2018.04.22
采納率:56%????等級(jí):13
已幫助:4280人
填充因子最簡(jiǎn)單的理解方法:
一張A4紙,用word去寫東西, 寫了兩頁 比如,每頁10行,且只能容納10行
現(xiàn)在你要修改第一頁的內(nèi)容,增加一行,在第9行增加,是不是從10行之后全部順延下去,然后 word自動(dòng)增加了第三頁??
這個(gè)時(shí)候,如果你的填充因子是20行,但,你每頁還是只填入了10行,
那么,你在第一頁的第9行增加一行之后,發(fā)生了什么事?
恩,結(jié)果就是,仍是兩頁,且,第二頁的文檔沒有發(fā)生任何變化。
這個(gè)時(shí)候,就有個(gè)問題啦: 在什么情況下用多大的填充因子呢? 呵呵。的確, 要看具體需要了,寫的多,則大,查的多,則小,具體情況具體對(duì)待。
延伸:
索引最終要的參數(shù):是填充因子。
當(dāng)創(chuàng)建一個(gè)新索引,或重建一個(gè)存在的索引時(shí),你可以指定一個(gè)填充因子,它是在索引創(chuàng)建時(shí)索引里的數(shù)據(jù)頁被填充的數(shù)量。填充因子設(shè)置為100意味著每個(gè)索引頁100%填滿,50%意味著每個(gè)索引頁50%填滿。
如果你創(chuàng)建一個(gè)填充因子為100的聚集索引(在一個(gè)非單調(diào)遞增的列上),那意味著每當(dāng)一個(gè)記錄被插入(或修改)時(shí),頁拆分都會(huì)發(fā)生,因?yàn)樵诂F(xiàn)存的頁上沒有這些數(shù)據(jù)的空間。很多的頁拆分會(huì)降低sqlserver的性能。 舉個(gè)例子:假定你剛剛用缺省的填充因子新創(chuàng)建了一個(gè)索引。當(dāng)sqlserver創(chuàng)建它時(shí),它把索引放在相鄰的物理頁面上,因?yàn)閿?shù)據(jù)能夠順序的讀所以這樣會(huì)有最優(yōu)的i/o訪問。但當(dāng)表隨著、、增加和改變時(shí),發(fā)生了頁拆分。當(dāng)頁拆分發(fā)生時(shí),sqlserver必須在磁盤的某處分配一個(gè)新的頁,這些新的頁和最初的物理頁不是連續(xù)的。因此,訪問使用的是隨機(jī)的i/o,而不是有順序的i/o,這樣訪問索引頁會(huì)變得更慢。 那么理想的填充因子是多少呢?它依賴于應(yīng)用程序?qū)qlserver表的讀和寫的比率。首要的原則,按照下面的指導(dǎo): 低更改的表(讀寫比率為100:1):100%的填充因子 高更改的表(寫超過讀):50-70%的填充因子 讀寫各一半的:80-90%的填充因子 在為應(yīng)用程序找到最優(yōu)的填充因子前也不得不進(jìn)行試驗(yàn)。不要假定一個(gè)低的填充因子總比高的好。低的填充因子會(huì)減少頁拆分,它也增加了sqlserver查詢期間讀的頁數(shù)量,從而減少性能。太低的填充因子不僅增加i/o開銷,也影響緩存。當(dāng)數(shù)據(jù)頁從磁盤移到緩存中時(shí),整個(gè)頁(包括空的空間)都移到緩存中。所以填充因子越低,不得不移到sqlserver緩存中的頁面就越多,意味著同時(shí)為其他重要數(shù)據(jù)頁駐留的空間就少,從而降低性能。 如果你沒有指定填充因子,缺省的填充因子時(shí)0,意味著100%的填充因子(索引的葉頁100%的填滿,但索引的中間頁有預(yù)留的空間)。
00分享舉報(bào)
總結(jié)
以上是生活随笔為你收集整理的mysql的填充因子_SQL SERVER中,什么是填充因子?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 钳位型过压保护器件压敏电阻MOV的生产工
- 下一篇: librtmp usage