日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

范式化设计和反范式化设计优缺点

發(fā)布時間:2024/4/13 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 范式化设计和反范式化设计优缺点 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
我們先來看一下范式化的優(yōu)點(diǎn),從前面的內(nèi)容中呢,可以發(fā)現(xiàn),范式化有以下優(yōu)點(diǎn),首先范式化的表呢,只有很少的,或者幾乎是沒有冗余數(shù)據(jù)的,其次呢范式化的更新操作呢,比反范式化要更快,最后呢范式化的表呢,通常要比反范式化的表呢更小,從上面來看呢,其實(shí)第一個優(yōu)點(diǎn),在范式化設(shè)計中呢,表的冗余要少,可以說是其最根本的優(yōu)點(diǎn)了,才會使表更新的更快,由于沒有冗余數(shù)據(jù),所以表的大小通常也會更小,這些有點(diǎn)看上去很不錯,如果只看其優(yōu)點(diǎn),就應(yīng)該在表的設(shè)計中呢,對表進(jìn)行完全的范式化設(shè)計,但是在前面的例子中,我們看到,并不是這樣,所以我們要看看范式化的缺點(diǎn)是什么

從之前的例子中呢,我們不難看出,范式化的主要缺點(diǎn)是在于對于查詢區(qū)查詢需要關(guān)聯(lián)多個表,在我們當(dāng)前的應(yīng)用中呢,對表對數(shù)據(jù)庫進(jìn)行讀操作呢,肯定是要遠(yuǎn)遠(yuǎn)高于寫操作的頻率,那么這種情況下呢,可以提高寫操作的性能,但是會降低讀操作的性能,進(jìn)行表關(guān)聯(lián)的成本就很高的,而范式化設(shè)計中呢,就算是再簡單的查詢也要關(guān)聯(lián)一次表才能夠?qū)崿F(xiàn),所以我們對表要適當(dāng)?shù)姆捶妒交僮?減少關(guān)聯(lián)的數(shù)量,那么范式化設(shè)計的第二個缺點(diǎn)呢,就是使我們更難的對查詢進(jìn)行索引的優(yōu)化,比如范式化可能會將經(jīng)常一起使用的列呢,分在不同的表中,這些列如果是在同一個表中的話,本來是可以是同一個索引的,而在不同的表中呢,就無法把他放到同一個索引中了,以上就是范式化設(shè)計的缺點(diǎn)

同樣我們要看一下反范式化設(shè)計的優(yōu)缺點(diǎn),從前面的例子中大家可以看到,反范式化優(yōu)化后呢,經(jīng)常一起查詢的大部分?jǐn)?shù)據(jù)呢,就會在一張表中,這樣就可以很好的減少表的關(guān)聯(lián)操作,而對于不需要關(guān)聯(lián)的表呢,大多數(shù)情況下呢,最差的性能,也就是會進(jìn)行全表掃描,就算數(shù)據(jù)比內(nèi)存要大了很多,無法在內(nèi)存中緩存所有表數(shù)據(jù)的情況下呢,使用全表掃描的時候呢,也比關(guān)聯(lián)操作要好一些,因?yàn)槿绻覀兪褂玫氖莍nnodb存儲引擎,而對表的全表掃描呢,使用的是順序的IO,這比關(guān)聯(lián)的很多關(guān)聯(lián)操作呢,要好的就在于大部分情況下呢,是隨機(jī)IO,而反范式化的第二優(yōu)點(diǎn)呢,我們對查詢可以更好的優(yōu)化,如果我們查詢所使用的列呢,全在一張表中,我們就可以使用覆蓋索引,以獲得最好的查詢性能,而如果查詢鎖使用的列在多張表中,我們就無法使用這種優(yōu)化方式了

那么反范式化的缺點(diǎn)呢,其實(shí)就是我們?yōu)槭裁匆M(jìn)行范式化設(shè)計的原因,主要有以下兩點(diǎn),第一點(diǎn)就是反范式化的表結(jié)構(gòu)呢,存在大量的數(shù)據(jù)冗余以及大量的數(shù)據(jù)維護(hù)異常,而第二點(diǎn)呢,對數(shù)據(jù)的修改需要修改多個地方,所以對數(shù)據(jù)的修改成本會更高,這個成本呢是CPU時間,磁盤IO等等這種硬件資源,或者系統(tǒng)資源,因?yàn)榉捶妒交O(shè)計的表呢,修改數(shù)據(jù)時呢,通常要修改多個地方,也會浪費(fèi)更多的資源了

所以完全的反范式化和完全的范式化設(shè)計呢,都不是最好的,我們在設(shè)計數(shù)據(jù)庫結(jié)構(gòu)時呢,結(jié)合使用范式化設(shè)計和反范式化設(shè)計,只有這樣,才能設(shè)計出,符合我們需求的高性能數(shù)據(jù)庫結(jié)構(gòu)

到了這里我們就完成了我們數(shù)據(jù)庫邏輯設(shè)計的階段,下面我們就要進(jìn)行我們的物理設(shè)計階段了

?

總結(jié)

以上是生活随笔為你收集整理的范式化设计和反范式化设计优缺点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。