一、分庫分表的集中方式
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 基本思想之為什麼要分庫分表?資料庫中的資料量不一定是可控的,在未進行分庫分表的情況下,隨著時間和業務的發展,庫中的表會越來越多,表中的資料量也會越來越大,相...