溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

在MYSQL中怎么分庫分表

發(fā)布時間:2022-01-05 17:12:29 來源:億速云 閱讀:183 作者:小新 欄目:大數(shù)據(jù)

小編給大家分享一下在MYSQL中怎么分庫分表,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

正文:

——————————————————————————————

在MYSQL的使用中,經常會有人問怎么分庫分表,經常會聽到兩種答案。

1 分庫分表,我們使用業(yè)務邏輯 + 業(yè)務程序的方式來進行,并期根據(jù)實際的環(huán)境將系統(tǒng)中的一些表分割到不同的MYSQL 服務器上存儲,達到以下兩個關鍵問題的解決。

       1 受制于MYSQL本身的單表的存儲能力,這樣處理將擴展MYSQL的單表的存儲能力。

       2 受制于MYSQL 單機(包括基于 MGR集群 , MHA高可用)本身數(shù)據(jù)吞吐能力,將數(shù)據(jù)打散后,提高了數(shù)據(jù)庫的存儲速度,和數(shù)據(jù)的提取速度。

這恐怕是分庫分表中最重要的需求。

2 分庫分表,使用中間件的方式,進行分表的操作,這是另一種分表的方式,與上邊的方式相比,這樣的方式更加的通用,通過中間件的方式將數(shù)據(jù)流自動分割到不同的MYSQL 數(shù)據(jù)庫服務器上,以達到和上邊使用特定邏輯達到同樣的效果,滿足數(shù)據(jù)的存儲擴展和更大吞吐量的需求。

那1 和 2 兩種分表的方案,之間的區(qū)別,個人理解 1 方案更貼近業(yè)務,并且如果是自己的公司來研發(fā)方案,則出錯,排錯,都比較方便。但如果自己定義的方案出現(xiàn)問題,并且已經上了一段生產,如果反悔修改上成本就比較高了。

方案2 采用中間件的方式來說,是大部分,或者說需要快速上線,業(yè)務方面方向比較靈活,而且需要分表的表,有點多的情況下,采用的一種方式。

從成本上看1 方案要投入的人力,物力會比較多,方案2 投入的人力,物力比較少,由于中間件是根據(jù)很多業(yè)務的需求而來所產生的,所以通用性比較強,適應力也比較高。方案1 那就看各家自己的開發(fā)水平和經驗了。

但為什么方案2在成本較低的情況下 ,有些公司沒有用也總結了以下幾點

1  中間件的使用,牽扯整體關鍵業(yè)務(分表的表一般都是業(yè)務中的主力)自己研發(fā)分庫分表的方案更有底。

2  中間件的某些設計上的問題,對復雜的查詢語句執(zhí)行,數(shù)據(jù)的返回,事務下發(fā)后,失敗的處理等等,都要復雜與單庫系統(tǒng),所以怕后期出現(xiàn)問題,無法解決,所以不使用。

這里從邏輯的角度來看中間件

1  中間件的自帶的主鍵生成的邏輯,是否能滿足企業(yè)業(yè)務中設想的邏輯,滿足開發(fā)的對于主鍵設計的需求。

2  中間件對于支持的MYSQL的語法的標準,以及是否可以承受一些復雜語句的查詢,降低開發(fā)人員在設計系統(tǒng)時的難度。

3  中間件在不使用后,數(shù)據(jù)的遷移,維護,改變分庫分表的更改的成本的問題。

基于上面的幾點考慮,標準化,穩(wěn)定性,有相關支持等等是應該被考慮在使用中間件的基礎上的一個考量。

在細節(jié)方面,使用中間件考慮的范圍會更多一些

比如對于學習成本的需求,中間件的加入不應該提高使用數(shù)據(jù)庫的成本,無論是從人員還是技術方面,與原有的數(shù)據(jù)庫的使用方式越貼近越好。

支持原生的數(shù)據(jù)庫協(xié)議,這也是降低學習成本,提高使用的方便感的一個應該由的標準。

當然對中間件的要求中看似沒有特點,但很難做到的部分,就是事務的回滾,在一個MYSQL 數(shù)據(jù)庫中進行事務的回滾,是在正常不過的事情, 而將一個事務下發(fā)到多臺MYSQL 并且在進行事務回滾,這就不是一件簡單的事情。

1 對于多個MYSQL 節(jié)點中,某個節(jié)點的失敗如何處理

2 對于執(zhí)行計劃如何打散到多個節(jié)點執(zhí)行,并且保持執(zhí)行效率

3 整體事務在操作失敗后,如何進行事務的回滾

4 對復雜SQL 的拆分,將復雜的查詢拆分為基本的關系代數(shù)查詢樹,在下發(fā)到各個節(jié)點,然后返回數(shù)據(jù)在進行合并等等。

5 對于復雜的SQL的執(zhí)行后的數(shù)據(jù)返回的正確性。

基于中間件的復雜,以及要求,其實我們可以使用的中間件并沒有太多的選擇大部分都是在使用mycat,更加清晰的了解和理解MYSQL中間件的定義,則是如何搞好分庫分表的第一步,實際上也是有其他的中間件可以選擇。

看完了這篇文章,相信你對“在MYSQL中怎么分庫分表”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI