簡單了解資料庫分庫分表,以及資料庫的分片
什麼是分庫分表
原本儲存於乙個庫的資料分塊儲存到多個庫上,把原本儲存於乙個表的資料分塊儲存在到多個表上
為什麼分庫分表
當一張表的資料達到幾千萬時,你查詢一次所花的時間會變多,如果有聯合查詢的花,我想啃根會死在那。分表的目的就在於此,減少資料庫的負擔,縮短查詢時間。
注:mysql中有一種機制是表鎖定和行鎖定,是為了保證資料的完整行。表鎖定表示你們不能對這樣表進行操作,必須等待我對錶操作完才行。行說定也一樣,別的sql必須等我對這條資料操作完了,才能對這條資料進行操作
資料庫分庫分表的集中方式
把乙個例項中的多個資料庫拆分到不同的例項
把乙個庫中的表分離到不同的資料庫中
資料庫分片
對乙個庫中的相關表進行水平拆分到不同的資料庫中
如何選擇分割槽鍵
分割槽鍵要能盡量避免跨分割槽分片查詢的發生
分割槽鍵要能盡量使各個分片中的資料平均
如何儲存無須分片的表
每個分片中儲存乙份相同的資料
使用額外的結點統一儲存
如何在結點上部署分片
每個分片使用單一資料庫,並且資料庫名也相同
將多個分片表儲存在乙個資料庫中,並在表名上加上分號字首
在乙個結點部署多個資料庫,每個資料庫包含乙個分片
如何分配分片中的資料
按分割槽鍵的hash值取模來分配分片資料
按分割槽鍵的範圍來分配分片資料
利用分割槽鍵和分片的對映表來分配分片資料
如何生成唯一id
使用auto_increment_和 auto_increment_offset引數
使用全域性結點生成id
在redis等快取伺服器中建立全域性id
資料庫分庫分表
1 基本思想之什麼是分庫分表?從字面上簡單理解,就是把原本儲存於乙個庫的資料分塊儲存到多個庫上,把原本儲存於乙個表的資料分塊儲存到多個表上。2 基本思想之為什麼要分庫分表?資料庫中的資料量不一定是可控的,在未進行分庫分表的情況下,隨著時間和業務的發展,庫中的表會越來越多,表中的資料量也會越來越大,相...
資料庫分庫 分表
分庫的優點是 實現簡單,庫與庫之間界限分明,便於維護,缺點是不利於頻繁跨庫操作,單錶資料量大的問題解決不了。分表的優點是 能解決分庫的不足點,但是缺點卻恰恰是分庫的優點,分表實現起來比較複雜,特別是分表規則的劃分,程式的編寫,以及後期的 資料庫拆分移植維護。實際應用中,一般網際網路企業的路線都是先分...
資料庫分庫分表
分庫分表 一種是按照不同的表 或者schema 來切分到不同的資料庫 主機 之上,這種切可以稱之為資料的垂直 縱向 切分 另外一種則是根據表中的資料的邏輯關係,將同乙個表中的資料按照某種條件拆分到多台資料庫 主機 上面,這種切分稱之為資料的水平 橫向 切分。垂直切分的優點 1 拆分後業務清晰,拆分規...