隨著互聯(lián)網(wǎng)技術(shù)的成熟,我們的個(gè)人信息都存儲(chǔ)在數(shù)據(jù)庫(kù)之中,那么對(duì)于程序員的我們,對(duì)于數(shù)據(jù)庫(kù)的優(yōu)化又是怎樣做到的呢?
一、數(shù)據(jù)切分
根據(jù)切分類型,可以分為兩種方式:垂直(縱向)切分和水平(橫向)切分
接下來給大家慢慢介紹:
1、垂直(縱向)切分
常見有垂直分庫(kù)和垂直分表兩種。
垂直分庫(kù)就是根據(jù)業(yè)務(wù)耦合性,將關(guān)聯(lián)度低的不同表存儲(chǔ)在不同的數(shù)據(jù)庫(kù)。
垂直分表是基于數(shù)據(jù)庫(kù)中的“列”進(jìn)行,某個(gè)表字段較多,可以新建一張擴(kuò)展表,將不經(jīng)常用或字段長(zhǎng)度較大的字段拆分出去到擴(kuò)展表去。
垂直切分的優(yōu)點(diǎn):
①解決業(yè)務(wù)系統(tǒng)層面的耦合,業(yè)務(wù)清晰
②與微服務(wù)的治理類似,也能對(duì)不同業(yè)務(wù)的數(shù)據(jù)進(jìn)行分級(jí)管理、維護(hù)、監(jiān)控、擴(kuò)展等。
③高并發(fā)場(chǎng)景下,垂直切分一定程度的提升IO、數(shù)據(jù)庫(kù)連接數(shù)、單機(jī)硬件資源的瓶頸。
當(dāng)然了,任何事物的出現(xiàn)都有兩面性,不足之處就是:
①部分表無法json,只能通過接口聚合方式解決,提升了開發(fā)的復(fù)雜度。
②分布式事務(wù)處理復(fù)雜
③依然存在單表數(shù)據(jù)量過大的問題
2、水平(橫向)切分
根據(jù)表內(nèi)數(shù)據(jù)內(nèi)在的邏輯關(guān)系,將同一個(gè)表按不同的條件分散到多個(gè)數(shù)據(jù)庫(kù)或多個(gè)表中,每個(gè)表中只包含一部分?jǐn)?shù)據(jù),從而使得單個(gè)表的數(shù)據(jù)量變小,達(dá)到分布的效果。
水平切分的優(yōu)點(diǎn):
①不存在單庫(kù)數(shù)據(jù)量過大、高并發(fā)的性能瓶頸,提升系統(tǒng)穩(wěn)定性和負(fù)載能力
②應(yīng)用端改造較小,不需要拆分業(yè)務(wù)模塊
缺點(diǎn):
①跨分片的事務(wù)一致性難以保證
②跨庫(kù)的join關(guān)聯(lián)查詢性能較差
③數(shù)據(jù)多次擴(kuò)展難度和維護(hù)量極大
綜上,是我個(gè)人對(duì)于數(shù)據(jù)庫(kù)性能的一些見解,歡迎大家在評(píng)論區(qū)留下自己的見解。
https://baijiahao.baidu.com/s?id=1621905347876886037&wfr=spider&for=pc