數(shù)據(jù)庫(kù)調(diào)優(yōu)積累系列(4):數(shù)據(jù)庫(kù)設(shè)計(jì)
數(shù)據(jù)庫(kù)設(shè)計(jì):
1、如果某表經(jīng)常出現(xiàn)死鎖,那就要做對(duì)象職責(zé)分離,就是把插入、更新、刪除等分離;
2、在設(shè)計(jì)或創(chuàng)建表的時(shí)候,我們往往會(huì)把Id字段設(shè)置為聚集索引,但是我們這樣的習(xí)慣可能不是***的,因?yàn)榫奂饕头蔷奂饕膮^(qū)別就是一個(gè)是物理存儲(chǔ)的,所以在查詢的時(shí)候如果使用聚集索引的話,可能會(huì)比非聚集索引要開(kāi),因?yàn)殛P(guān)系到數(shù)據(jù)頁(yè)的分布,因此我們有時(shí)可以根據(jù)我們的需要來(lái)設(shè)置聚集索引,比如待辦待閱一般都是按照時(shí)間來(lái)倒排的,那我們可以讓日期字段來(lái)做聚集索引;
3、當(dāng)表的數(shù)據(jù)量比較大,而且一些基本的優(yōu)化也不能滿足到需求,那就可以考慮:縱向、橫向分割表,減少表的尺寸(sp_spaceuse);
4、表字段如果不為空的,就不應(yīng)該設(shè)置允許空,***:這里可以確保數(shù)據(jù)的完整性;第二:依稀記得跟性能有關(guān),但是記不起,歡迎補(bǔ)充;
5、在表中設(shè)計(jì)索引屬性的時(shí)候,我們都會(huì)看到填充因子,通常情況下我們都是不去理會(huì)它的,如果我們?nèi)チ私馑苍S我們會(huì)有不錯(cuò)的回報(bào)。(以下是個(gè)人言論,有可能存在BUG,不久將來(lái)會(huì)進(jìn)一步確認(rèn)是否正確。)
a、填充因子的意思就是當(dāng)數(shù)據(jù)頁(yè)的數(shù)據(jù)達(dá)到多少百分比的時(shí)候就換頁(yè),相當(dāng)以在數(shù)據(jù)頁(yè)中預(yù)留多少空間來(lái)應(yīng)對(duì)數(shù)據(jù)的增長(zhǎng),比如聚集索引,如果我們選擇了100%或者0%,意思就是我們要把整個(gè)數(shù)據(jù)頁(yè)都填充完整;
b、如果該表有一個(gè)以ID自增為聚集索引,而且我們?cè)O(shè)置的這個(gè)比值比較小,就會(huì)有可能造成比較多的磁盤(pán)碎片,查詢時(shí)的IO消耗比較大,這是因?yàn)榫奂饕跀?shù)據(jù)頁(yè)的表現(xiàn)是物理存儲(chǔ),索引每個(gè)數(shù)據(jù)頁(yè)都會(huì)留下比較多的數(shù)據(jù)頁(yè)空間,而且是永遠(yuǎn)都不會(huì)給使用到的;
c、只有當(dāng)索引被創(chuàng)建或者是重建時(shí)才會(huì)重新設(shè)置數(shù)據(jù)頁(yè)的百分比分布,當(dāng)做插入數(shù)據(jù)后,改數(shù)據(jù)頁(yè)的比例就會(huì)小于這個(gè)百分比了;
關(guān)于數(shù)據(jù)庫(kù)設(shè)計(jì)的知識(shí)就為大家介紹到這里,相信通過(guò)上文中的介紹大家對(duì)數(shù)據(jù)庫(kù)設(shè)計(jì)已經(jīng)了解了,希望大家都能夠從中有所收獲。
【編輯推薦】