資料庫之分庫分表

2021-09-10 07:03:15 字數 851 閱讀 2514

一、分庫分表的集中方式

1、把乙個節點中的多個資料庫拆分到不同的節點上

優點:簡單

缺點:如果寫壓力不均衡則達不到效果

2、把乙個資料庫中的表分離到不同的資料庫中

優點:減輕原來的寫壓力

缺點:只能解決暫時的壓力

3、表的水平拆分。下面細說

二、資料庫表分片前的準備

1、如何選擇分割槽鍵

1)分割槽鍵要盡量避免跨分片查詢的發生(否則則達不到分片的效果)

2)分割槽鍵要能盡量使各個分片中的資料平均(減小寫壓力)

2、如何儲存無需分片的表

1)每個分片中都儲存乙份相同的資料

2)使用額外的節點統一儲存(查詢效率低於上一種)

3、如何在節點上部署分片

1)每個分片使用單一資料庫,並且資料庫名也相同

2)將多個分片表儲存在乙個資料庫中,並且在表名上加入分片號字尾

3)在乙個節點中部署多個資料庫,每個資料庫包含乙個分片

4、如何分配分片中的資料

1)按分割槽鍵的hash值取模來分配分片資料

優點:資料平均

缺點:不易於查詢

2)按分割槽鍵的範圍來分配分片資料

優點:能夠知道資料在哪個分片中

缺點:資料可能不平均

3)利用分割槽鍵和分片的對映表來分配分片資料

優點:便於控制分片資料

5、如何生成全域性唯一的id

1)使用auto_increment_increment(自增長度和分片數相同)和auto_increment_offet(初始值)

試用於單節點的多分片的情況

2)使用全域性節點來生成id

3)使用redis等快取伺服器中建立全域性id

資料庫之分庫分表

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

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

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

資料庫分庫分表

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