國(guó)產(chǎn)數(shù)據(jù)庫(kù)對(duì)象能力評(píng)測(cè)_視圖&序列
原創(chuàng)1. 對(duì)象(視圖)能力說(shuō)明
先來(lái)看看各家數(shù)據(jù)庫(kù)產(chǎn)品在視圖能力的大致表現(xiàn)如何。
1.png
1).視圖類型
- 普通視圖,是數(shù)據(jù)庫(kù)中的一種虛擬表,它并不存儲(chǔ)數(shù)據(jù),而是保存了一條查詢語(yǔ)句。當(dāng)用戶訪問普通視圖時(shí),數(shù)據(jù)庫(kù)會(huì)根據(jù)視圖的定義實(shí)時(shí)生成數(shù)據(jù)。這意味著普通視圖是動(dòng)態(tài)的,每次訪問時(shí)都會(huì)重新計(jì)算查詢結(jié)果。
- 物化視圖,是一種特殊的視圖,它不僅僅保存了查詢邏輯,還保存了查詢結(jié)果的數(shù)據(jù)。物化視圖在性能優(yōu)化方面具有顯著的優(yōu)勢(shì),特別是在處理大型數(shù)據(jù)集和復(fù)雜查詢時(shí)。通過(guò)將查詢結(jié)果存儲(chǔ)在物化視圖中,可以避免每次查詢時(shí)都重新計(jì)算,提高查詢速度和效率。物化視圖在數(shù)據(jù)倉(cāng)庫(kù)和商業(yè)智能應(yīng)用中非常常見,因?yàn)樗鼈兛梢燥@著提高復(fù)雜查詢的性能。
- 遞歸視圖,是一種特殊的視圖,通常用于處理遞歸查詢。遞歸查詢是指在查詢過(guò)程中,查詢結(jié)果需要依賴于自身的查詢結(jié)果。遞歸視圖通常用于處理層次結(jié)構(gòu)的數(shù)據(jù),如組織結(jié)構(gòu)、目錄樹等。遞歸視圖在處理層次結(jié)構(gòu)數(shù)據(jù)和遞歸查詢時(shí)非常有用,特別是在需要處理多級(jí)嵌套數(shù)據(jù)的場(chǎng)景中。
2.png
2).視圖定義
- WITH CHECK OPTION 此選項(xiàng)用于可更新視圖中。指明往該視圖中 insert 或 update 數(shù)據(jù)時(shí),插入行或更新行的數(shù)據(jù)必須滿足視圖定義中所指定的條件。
- WITH READ ONLY 指明該視圖是只讀視圖,只可以查詢,但不可以做其他 DML 操作;如果不帶該選項(xiàng),則數(shù)據(jù)庫(kù)自身判斷視圖是否可更新的規(guī)則判斷視圖是否只讀。有些數(shù)據(jù)庫(kù)僅提供自動(dòng)判斷能力,不提供干預(yù)能力。
2. 對(duì)象(序列)能力說(shuō)明
先來(lái)看看各家數(shù)據(jù)庫(kù)產(chǎn)品在序列能力的大致表現(xiàn)如何,其中MySQL是通過(guò)Auto Increment自增字段來(lái)等價(jià)實(shí)現(xiàn)的。
3.png
數(shù)據(jù)庫(kù)序列,是一種用于生成唯一數(shù)字標(biāo)識(shí)符的核心機(jī)制,主要用于自動(dòng)化生成主鍵、訂單號(hào)等需全局唯一性的場(chǎng)景,其能力包括靈活控制起始值、步長(zhǎng)及循環(huán)規(guī)則,支持高并發(fā)環(huán)境下的低鎖競(jìng)爭(zhēng)和高效生成,尤其通過(guò)緩存機(jī)制(如Oracle的CACHE)顯著提升吞吐量。然而,序列存在無(wú)法嚴(yán)格保證連續(xù)性的缺陷,事務(wù)回滾或緩存丟失可能導(dǎo)致序列值斷層,且不同數(shù)據(jù)庫(kù)的實(shí)現(xiàn)差異(如Oracle獨(dú)立序列與MySQL自增列)可能引發(fā)兼容性問題。性能方面,合理配置緩存可減少I/O開銷,但無(wú)緩存時(shí)的高并發(fā)請(qǐng)求可能成為瓶頸,分布式場(chǎng)景下還需依賴分片策略或混合算法(如雪花ID)以避免全局鎖爭(zhēng)用。盡管序列在唯一性和效率上表現(xiàn)優(yōu)異,但需權(quán)衡連續(xù)性缺失與資源消耗風(fēng)險(xiǎn),對(duì)于強(qiáng)制連續(xù)性要求的業(yè)務(wù),可考慮UUID或應(yīng)用層生成方案,同時(shí)需定期監(jiān)控序列使用率以預(yù)防溢出問題。