網際網路公司為啥基本不使用mysql分割區表

2020-10-15 11:00:20

一,需求緣起:

有個朋友問我分割區表在我們公司的應用,我回答不出來,在我印象中,百度、騰訊都沒有聽說有分割區表相關的應用,業內進行一些技術交流的時候也更多的是自己分庫分表,而不是使用分割區表。於是去網上查了一下,並詢問了大廠的DBA專家朋友們,將自己收到的資訊沉澱下來,分享給大夥。

二,解決什麼問題?

回答:當mysql單表的資料庫過大時,資料庫的存取速度會下降,「資料量大」問題的常見解決方案是「水平切分」。

三,mysql常見的水平切分方式有哪些?

回答:分庫分表,分割區表

四,什麼是mysql的分庫分表?

回答:把一個很大的庫(表)的資料分到幾個庫(表)中,每個庫(表)的結構都相同,但他們可能分佈在不同的mysql範例,甚至不同的物理機器上,以達到降低單庫(表)資料量,提高存取效能的目的。
分庫分表往往是業務層實施的,分庫分表後,為了滿足某些特定業務功能,往往需要rd修改程式碼。

五,什麼是mysql的分割區表?

回答:所有資料還在一個表中,但物理儲存根據一定的規則放在不同的檔案中。這個是mysql支援的功能,業務rd程式碼無需改動。

看上去分割區表很帥氣,為什麼大部分網際網路還是更多的選擇自己分庫分表來水平擴充套件咧?
回答:
1)分割區表,分割區鍵設計不太靈活,如果不走分割區鍵,很容易出現全表鎖
2)一旦資料量並行量上來,如果在分割區表實施關聯,就是一個災難
3)自己分庫分表,自己掌控業務場景與存取模式,可控。分割區表,研發寫了一個sql,都不確定mysql是怎麼玩的,不太可控
4)運維的坑,嘿嘿
5)…

六,總結

文章很短,一分鐘搞定,希望大家有收穫,有任何疑問歡迎提出,我不懂的再去問DBA專家大拿。如果大家有分割區表的應用,踩了什麼坑,亦可回覆,大家一起討論。

埋坑:如何來進行水平切分,分庫分表?如果大夥感興趣,歡迎大夥留言,後續和大家聊更多的資料庫架構問題。