資料庫效能優化之 分庫分表的應用

2021-09-06 16:40:45 字數 1023 閱讀 4081

分庫分表的概念

分庫分表就是按照一定的規則,對原有的資料庫和表進行拆分,把原本儲存於乙個庫的資料分塊儲存到多個庫上,把原本儲存於乙個表的資料分塊儲存到多個表上。

隨著時間和業務的發展,資料庫中的資料量增長是不可控的,庫和表中的資料會越來越大,隨之帶來的是更高的磁碟、io、系統開銷,甚至效能上的瓶頸,而一台服務的資源終究是有限的,因此需要對資料庫和表進行拆分,從而更好的提供資料服務。

分庫分表的方式

垂直分庫/分表

​垂直劃分資料庫是根據業務進行劃分,例如將shop庫中涉及商品、訂單、使用者的表分別劃分出成乙個庫,通過降低單庫(表)的大小來提高效能,但這種方式並沒有解決高資料量帶來的效能損耗。同樣的,分表的情況就是將乙個大表根據業務功能拆分成乙個個子表,例如使用者錶可根據業務分成基本資訊表和詳細資訊表等。

垂直分庫/分表的優缺點

優點:拆分後業務清晰,達到專庫專用。

可以實現熱資料和冷資料的分離,將不經常變化的資料和變動較大的資料分散再不同的庫/表中。

便於維護

缺點:不解決資料量大帶來的效能損耗,讀寫壓力依舊很大

不同的業務無法跨庫關聯(join),只能通過業務來關聯

水平分庫/分表

​水平劃分是根據一定規則,例如時間或id序列值等進行資料的拆分。比如根據年份來拆分不同的資料庫。每個資料庫結構一致,但是資料得以拆分,從而提公升效能。又比如根據使用者id的值,根據規則分成若干個表。每個表結構一致,(這點與垂直分庫分表相反)。

水平分庫/分表的優缺點

優點:單庫(表)的資料量得以減少,提高效能

提高了系統的穩定性和負載能力

切分出的表結構相同,程式改動較少

缺點:拆分規則較難抽象

資料分片在擴容時需要遷移

維護量增大

依然存在跨庫無法join等問題,同時涉及分布式事務,資料一致性等問題。

資料庫之分庫分表

一 分庫分表的集中方式 1 把乙個節點中的多個資料庫拆分到不同的節點上 優點 簡單 缺點 如果寫壓力不均衡則達不到效果 2 把乙個資料庫中的表分離到不同的資料庫中 優點 減輕原來的寫壓力 缺點 只能解決暫時的壓力 3 表的水平拆分。下面細說 二 資料庫表分片前的準備 1 如何選擇分割槽鍵 1 分割槽...

資料庫之分庫分表

1 基本思想之什麼是分庫分表?從字面上簡單理解,就是把原本儲存於乙個庫的資料分塊儲存到多個庫上,把原本儲存於乙個表的資料分塊儲存到多個表上。2 基本思想之為什麼要分庫分表?資料庫中的資料量不一定是可控的,在未進行分庫分表的情況下,隨著時間和業務的發展,庫中的表會越來越多,表中的資料量也會越來越大,相...

資料庫之分庫分表 垂直?水平?

原文 資料庫之分庫分表 垂直?水平?不管是io瓶頸,還是cpu瓶頸,最終都會導致資料庫的活躍連線數增加,進而逼近甚至達到資料庫可承載活躍連線數的閾值。在業務service來看就是,可用資料庫連線少甚至無連線可用。接下來就可以想象了吧 併發量 吞吐量 崩潰 第一種 磁碟讀io瓶頸,熱點資料太多,資料庫...