您好,登錄后才能下訂單哦!
這篇文章主要介紹數(shù)據(jù)庫中在什么情況下需要用分庫分表,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
為了保證數(shù)據(jù)庫的查詢效率,當(dāng)數(shù)據(jù)達(dá)成一定量時(shí)建議進(jìn)行分表操作
當(dāng)oracle單表的數(shù)據(jù)量大于2000萬行時(shí),建議進(jìn)行水平分拆。
當(dāng)mysql單表的數(shù)據(jù)量大于1000萬行時(shí),建議進(jìn)行水平分拆。
單表容量到了1000W以上基本上稍微復(fù)雜一點(diǎn)的SQL都需要仔細(xì)優(yōu)化,這時(shí)候的SQL耗時(shí)主要集中在磁盤IO上,數(shù)據(jù)命令緩存的概率降低,總之不好搞,如果是正常的互聯(lián)網(wǎng)項(xiàng)目,提前分庫分表,在前期能做的先做了,后面會(huì)省很多時(shí)間處理數(shù)據(jù)遷移的事情,數(shù)據(jù)操作比較頻繁,比如訂單表,可能涉及到的插入和更新操作特別頻繁,特別是大并發(fā)的時(shí)候,這時(shí)如果只用一個(gè)庫,對(duì)磁盤的IO和mysql的性能都是一種考驗(yàn),所以要分庫分表,把操作頻繁的表和基本信息表分開處理,減小單個(gè)數(shù)據(jù)庫的壓力,同時(shí)也不影響其他基本信息的讀寫
如果只有一臺(tái)服務(wù)器,當(dāng)select很多時(shí),update和delete會(huì)被這些select訪問中的數(shù)據(jù)堵塞,等待select結(jié)束,并發(fā)性能不高,此時(shí)就要選擇讀寫分離了,主 庫 負(fù) 責(zé) 寫 , 從 庫 負(fù) 責(zé) 讀 \color{#FF0000}{主庫負(fù)責(zé)寫,從庫負(fù)責(zé)讀}主庫負(fù)責(zé)寫,從庫負(fù)責(zé)讀
具體情況根據(jù)數(shù)據(jù)庫服務(wù)器的配置和架構(gòu)有關(guān),僅供參考
sqlserver一般如下條件就可以選擇分區(qū)分表操作了
1、表的大小超過2GB。
2、表中包含歷史數(shù)據(jù),新的數(shù)據(jù)被增加都新的分區(qū)中。
當(dāng)一個(gè)數(shù)據(jù)表的數(shù)據(jù)量達(dá)到千萬級(jí)別以后,每次查詢都需要消耗大量的時(shí)間,所以當(dāng)表數(shù)據(jù)量達(dá)到一定量級(jí)后我們需要對(duì)數(shù)據(jù)表水平切割。水平分區(qū)分表就是把邏輯上的一個(gè)表,在物理上按照你指定的規(guī)則分放到不同的文件里,把一個(gè)大的數(shù)據(jù)文件拆分為多個(gè)小文件,還可以把這些小文件放在不同的磁盤下。這樣把一個(gè)大的文件拆分成多個(gè)小文件,便于我們對(duì)數(shù)據(jù)的管理。
顧名思義,即把存于一個(gè)庫的數(shù)據(jù)分散到多個(gè)庫中,把存于一個(gè)表的數(shù)據(jù)分散到多個(gè)表中。
當(dāng)一個(gè)數(shù)據(jù)庫被創(chuàng)建之后,隨著時(shí)間的推移和業(yè)務(wù)量的增加,數(shù)據(jù)庫中表以及表中的數(shù)據(jù)量就會(huì)越來越多,就有可能出現(xiàn)兩種弊端:(1)數(shù)據(jù)庫的存儲(chǔ)資源是有限的,其負(fù)載能力也是有限的,數(shù)據(jù)的大量積累肯定會(huì)導(dǎo)致其處理數(shù)據(jù)的能力下降;(2)數(shù)據(jù)量越多,那么對(duì)數(shù)據(jù)的增刪改查操作的開銷也會(huì)越來越大,所以,當(dāng)出現(xiàn)如上兩種情況,分庫分表勢在必行。
(1)垂直切分
適用場景:如果是因?yàn)楸淼膫€(gè)數(shù)多而讓數(shù)據(jù)多,可以按照功能劃分,把聯(lián)系密切的表切分出來放在同一個(gè)庫中(分庫);
如果表的字段太多,可以以列為出發(fā)點(diǎn),將字段進(jìn)行拆分(分表);
(2)水平切分
適用場景:如果是因?yàn)楸碇械臄?shù)據(jù)量過于龐大,則可以采用水平切分,按照某種約定好的規(guī)則將數(shù)據(jù)切分到不同的數(shù)據(jù)庫中;
必須要根據(jù)當(dāng)前數(shù)據(jù)庫的情況做出合適的選擇,也可以將兩種情況結(jié)合在一起。
分庫分表的結(jié)果會(huì)使數(shù)據(jù)分散,不好查詢,主要有兩種查詢方式:
(1)、分步查:先查找主表,然后得到關(guān)聯(lián)表的id,再發(fā)起請(qǐng)求得到關(guān)聯(lián)數(shù)據(jù);
(2)、聯(lián)合查:同時(shí)發(fā)起多個(gè)查詢請(qǐng)求,然后將所有的結(jié)果集合起來。
以上是“數(shù)據(jù)庫中在什么情況下需要用分庫分表”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。