分庫分表Mycat總結

2022-06-06 23:42:11 字數 1802 閱讀 5451

在日常的工作中,關係型資料庫本身比較容易成為系統的瓶頸點,雖然讀寫分離能分散資料庫的讀寫壓力,但並沒有分散儲存壓力,當資料量達到千萬甚至上億時,單台資料庫伺服器的儲存能力會成為系統的瓶頸,主要體現在以下幾個方面:

①:資料量太大,讀寫的效能會下降,即使有索引,索引也會變得很大,效能同樣會降下。

②:資料庫檔案會得很大,資料庫備份和恢復需要耗時很長。

③:資料庫檔案越大,極端情況下丟失資料的風險越高。

因此,當流量越來越大時,且單機容量達到上限時,此時需要考慮對其進行切分,切分的目的就在於減少單機資料庫的負擔,將由多台資料庫伺服器一起來分擔,縮短查詢時間。

切分策略

資料切分分為兩種方式,縱向切分和水平切分

縱向切分

常見有縱向分庫縱向分表兩種。

1). 縱向分庫就是根據業務耦合性,將關聯度低的不同表儲存在不同的資料庫,做法與大系統拆分為多個小系統類似,按業務分類進行獨立劃分。與「微服務治理」的做法相似,每個微服務使用單獨的乙個資料庫。

2). 垂直分表是基於資料庫中的列進行,某個表字段較多,可以新建一張擴充套件表,將不經常用或者字段長度較大的字段拆出到擴充套件表中。在字段很多的情況下,通過大表拆小表,更便於開發與維護,也能避免跨頁問題,mysql底層是通過資料頁儲存的,一條記錄占用空間過大會導致跨頁,造成額外的開銷。另外,資料庫以行為單位將資料載入到記憶體中,這樣表中字段長度越短且訪問頻次較高,記憶體能載入更多的資料,命中率更高,減少磁碟io,從而提公升資料庫的效能。

垂直切分的優點:

①:解決業務系統層面的耦合,業務清晰

②:與微服務的治理類似,也能對不同業務的資料進行分級管理,維護,監控,擴充套件等。

③:高併發場景下,垂直切分一定程度的提公升io,資料庫連線數,單機硬體資源的瓶頸。

垂直切分的缺點

①:部分表無法join,只能通過介面聚合方式解決,提公升了開發的複雜度。

②:分布式事處理複雜

③;依然存在單錶資料量過大的問題。

水平切分

當乙個應用難以再細粒度的垂直切分或切分後資料量行數依然巨大,存在單庫讀寫,儲存效能瓶頸,這時候需要進行水平切分。

水平切分為庫內分表和分庫分表,是根據表內資料內在的邏輯關係,將同乙個表按不同的條件分散到多個資料庫或多表中,每個表中只包含一部分資料,從而使得單個表的資料量變小,達到分布式的效果。

庫內分表只解決單一表資料量過大的問題,但沒有將表分布到不同機器的庫上,因些對於減輕mysql的壓力來說幫助不是很大,大家還是競爭同乙個物理機的cpu、記憶體、網路io,最好通過分庫分表來解決。

水平切分優點:

①:不存在單庫資料量過大、高併發的效能瓶頸,提公升系統穩定性和負載能力。

②:應用端改造較小,不需要拆分業務模組。

水平切分缺點:

①:跨分片的事務一致性難以保證

②:跨庫的join關聯查詢效能較差

③:資料多次擴充套件維度和維護量極大。

一、安裝及啟動:

1.安裝

2.解壓,配置環境變數,path=d:\software\mycat-server-1.6-release-20161028204710-win\mycat\bin[mycat安裝位址]

3.修改配置檔案【目錄:d:\software\mycat-server-1.6-release-20161028204710-win\mycat\conf】

2.啟動

mycat.bat start

3.查詢執行狀態

mycat.bat status

4.停止服務

mycat.bat stop

Mycat分庫分表

schema.xml 配置 name dn1 datahost localhost1 database db1 name dn2 datahost localhost1 database db2 name dn3 datahost localhost1 database db3 把localhost...

mycat分庫分表

一 修改schema.xml select user 二 修改server.xml 0 0 10 011m 1k0 384m true 123456 testdb user testdb true 三 啟動關閉1 進入bin目錄,2 啟動輸入.mycat start。關閉命令 mycat stop ...

mycat分庫分表

mycat是資料庫分庫分表的中介軟體,mycat使用最多的兩個功能是 讀寫分離和分庫分表功能,支援全域性表和e r關係 這兩個比較實用 mycat相當於是乙個 可以將多個實際資料庫組合成乙個完整的虛擬資料庫 我們可以直接訪問mycat的埠,其使用的是mysql原生的協議連線資料庫進行通訊 mycat...