Mysql數據庫學習之Mycat是如何分片分庫的?

Mycat分表分庫雖然能解決大表對數據庫系統的壓力,但也有一些不利,因此Mycat分表分庫要先解決的問題是,分不分庫,分哪些庫,什麼規則分,分多少分片。那麼究竟是怎麼分的呢?

1、能不分就不分,1000萬以內的表,不建議分片,通過合適的索引,讀寫分離等方式,可以很好的解決性能問題。

2、分片數量儘量少,分片儘量均勻分佈在多個DataHost上,因爲一個查詢SQL跨分片越多,則總體性能越差,雖然要好於所有數據在一個分片的結果,只在必要的時候進行擴容,增加分片數量。

3、分片規則需要慎重選擇,分片規則的選擇,需要考慮數據的增長模式,數據的訪問模式,分片關聯性問題,以及分片擴容問題,最近的分片策略爲範圍分片,枚舉分片,一致性Hash分片,這幾種分片都有利於擴容。

4、儘量不要在一個事務中的SQL跨越多個分片,分佈式事務一直是個不好處理的問題

5、查詢條件儘量優化,儘量避免Select * 的方式,大量數據結果集下,會消耗大量帶寬和CPU資源,查詢儘量避免返回大量結果集,並且儘量爲頻繁使用的查詢語句建立索引。

總體上來說,分片的選擇是取決於最頻繁的查詢SQL的條件,因爲不帶任何Where語句的查詢SQL,會便利所有的分片,性能相對最差,因此這種SQL越多,對系統的影響越大,所以我們要儘量避免這種SQL的產生。

互聯網企業大多用的數據庫是MySQL的,想要衆多的IT工作者中脫穎而出,就需要擁有高深的技術,學習增值是必不可少的。學習之路,是貴在堅持的。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章