oracle分表效率,資料庫分庫分表是什麼,什麼情況下需要用分庫分表

mcxiaoracle發表於2022-09-12

1、oracle

當oracle單表的資料量大於2000萬行時,建議進行水平分拆


2、mysql

當mysql單表的資料量大於1000萬行時,建議進行水平分拆。

單表容量到了1000W以上基本上稍微複雜一點的SQL都需要仔細最佳化,這時候的SQL耗時主要集中在磁碟IO上,資料命令快取的機率降低,總之不好搞,如果是正常的網際網路專案,提前 分庫分表 ,在前期能做的先做了,後面會省很多時間處理資料遷移的事情,資料操作比較頻繁,比如訂單表,可能涉及到的插入和更新操作特別頻繁,特別是大併發的時候,這時如果只用一個庫,對磁碟的IO和mysql的效能都是一種考驗,所以要分庫分表,把操作頻繁的表和基本資訊表分開處理,減小單個資料庫的壓力,同時也不影響其他基本資訊的讀寫。


3、sqlserver

sqlserver一般如下條件就可以選擇分割槽分表操作了

1、表的大小超過2GB。

2、表中包含歷史資料,新的資料被增加都新的分割槽中。

當一個資料表的資料量達到千萬級別以後,每次查詢都需要消耗大量的時間,所以當表資料量達到一定量級後我們需要對資料表水平切割。水平分割槽分表就是把邏輯上的一個表,在物理上按照你指定的規則分放到不同的檔案裡,把一個大的資料檔案拆分為多個小檔案,還可以把這些小檔案放在不同的磁碟下。這樣把一個大的檔案拆分成多個小檔案,便於我們對資料的管理。

什麼是分庫分表:?

顧名思義,即把存於一個庫的資料分散到多個庫中,把存於一個表的資料分散到多個表中。

2、什麼情況下需要分庫分表?

當一個資料庫被建立之後,隨著時間的推移和業務量的增加,資料庫中表以及表中的資料量就會越來越多,就有可能出現兩種弊端:(1)資料庫的儲存資源是有限的,其負載能力也是有限的,資料的大量積累肯定會導致其處理資料的能力下降;(2)資料量越多,那麼對資料的增刪改查操作的開銷也會越來越大,所以,當出現如上兩種情況,分庫分表勢在必行。


3、分庫分表的方式

(1)垂直切分

適用場景:如果是因為表的個數多而讓資料多,可以按照功能劃分,把聯絡密切的表切分出來放在同一個庫中(分庫);

如果表的欄位太多,可以以列為出發點,將欄位進行拆分(分表);

(2)水平切分

適用場景:如果是因為表中的資料量過於龐大,則可以採用水平切分,按照某種約定好的規則將資料切分到不同的資料庫中;

必須要根據當前資料庫的情況做出合適的選擇,也可以將兩種情況結合在一起。



4、如何聯合查詢?

分庫分表的結果會使資料分散,不好查詢,主要有兩種查詢方式:

(1)、分步查:先查詢主表,然後得到關聯表的id,再發起請求得到關聯資料;


(2)、聯合查:同時發起多個查詢請求,然後將所有的結果集合起來。


分享:


https://blog.csdn.net/weixin_28835583/article/details/116391733



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69949806/viewspace-2914329/,如需轉載,請註明出處,否則將追究法律責任。

相關文章