資料庫拆分有:1、依功能劃分【垂直切分】,將不同功能相關的表放到不同的資料庫中,這樣做的好處是非常直觀;2、按表中某一字段值的範圍劃分【水平切分】,當伴隨著某一個表的資料量越來越大,以至於不能承受的時候,就需要對它進行進一步的切分。
資料庫做拆分的幾種方式:
1.以功能劃分(垂直切分)
將不同功能相關的表格放到不同的資料庫中,這樣做的好處是非常直觀。但當某一部分的功能其資料量或效能要求超出了可控的範圍,就需要繼續對其進行深入的再切分。
2.以表中某一字段值的範圍劃分(水平切分)
當伴隨著某一個表的資料量越來越大,以至於不能承受的時候,就需要對它進行進一步的切分。一種選擇是根據key 的範圍來做切分,譬如ID 為 1-10000的放到A上,ID 為10000~20000的放到B。這樣的擴展就是可預見的。另一種是根據某一字段值來劃分,譬如根據用戶名的首字母,如果是A-D,就屬於A,E-H就屬於B。這樣做也存在不均衡性,當某個範圍超出了單點所能承受的範圍就需要繼續切分。還有按日期切分等等。
優點:單表大小可控,天然水平擴展
缺點:無法解決集中寫入瓶頸的問題。
3.基於hash的切分
一般採用mod來切分,一開始確定切分資料庫的數量,透過hash取模決定使用哪一個。這種方法能夠平均地來分配數據,但是伴隨著數據量的增大,需要進行擴展的時候,這種方式無法做到在線擴容。每增加節點的時候,就需要對hash 演算法重新運算。
所以採用此方法推薦採用mod 2^n這種一致性雜湊
以點評統一訂單庫為例,分庫分錶的方案是32*32的,即透過userId後四位mod 32分到32個庫中,同時再將userId後四位div 32 mod 32將每個庫分成32個表,共分為1024張表。其線上部署情況為8個集群(主從),每個集群4個庫
4.基於路由表的切分
前面的幾種方式都是根據應用的資料來決定操作的,基於路由表的切分是一種更鬆散的方法。它單獨維護一張路由表,根據使用者的某一屬性來尋找路由表決定使用哪個資料庫,這種方式是一種更通用的方案。
優點:id和函式庫的mapping演算法可以隨意更改
缺點:可能會引入額外的單點
以上是資料庫拆分有幾種方式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

Dreamweaver CS6
視覺化網頁開發工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。