互聯(lián)網公司為啥不使用MySQL分區(qū)表?
緣起:有個朋友問我分區(qū)表在58的應用,我回答不出來,在我印象中,百度、58都沒有聽說有分區(qū)表相關的應用,業(yè)內進行一些技術交流的時候也更多的是自己分庫分表,而不是使用分區(qū)表。于是去網上查了一下,并詢問了58到家的DBA專家,將自己收到的信息沉淀下來,share給大伙。
解決什么問題?
回答:當mysql單表的數(shù)據庫過大時,數(shù)據庫的訪問速度會下降,“數(shù)據量大”問題的常見解決方案是“水平切分”。
mysql常見的水平切分方式有哪些?
回答:分庫分表,分區(qū)表
什么是mysql的分庫分表?
回答:把一個很大的庫(表)的數(shù)據分到幾個庫(表)中,每個庫(表)的結構都相同,但他們可能分布在不同的mysql實例,甚至不同的物理機器上,以達到降低單庫(表)數(shù)據量,提高訪問性能的目的。
分庫分表往往是業(yè)務層實施的,分庫分表后,為了滿足某些特定業(yè)務功能,往往需要rd修改代碼。
什么是mysql的分區(qū)表?
回答:所有數(shù)據還在一個表中,但物理存儲根據一定的規(guī)則放在不同的文件中。這個是mysql支持的功能,業(yè)務rd代碼無需改動。
看上去分區(qū)表很帥氣,為什么大部分互聯(lián)網還是更多的選擇自己分庫分表來水平擴展咧?
回答:
- 分區(qū)表,分區(qū)鍵設計不太靈活,如果不走分區(qū)鍵,很容易出現(xiàn)全表鎖
- 一旦數(shù)據量并發(fā)量上來,如果在分區(qū)表實施關聯(lián),就是一個災難
- 自己分庫分表,自己掌控業(yè)務場景與訪問模式,可控。分區(qū)表,研發(fā)寫了一個sql,都不確定mysql是怎么玩的,不太可控
- 運維的坑,嘿嘿
- …
文章很短,一分鐘搞定,希望大家有收獲,有任何疑問歡迎提出,我不懂的再去問DBA專家。如果大家有分區(qū)表的應用,踩了什么坑,亦可回復,我下一篇文章share出來。
埋坑:如何來進行水平切分,分庫分表?如果大伙感興趣,后續(xù)和大家聊更多的數(shù)據庫架構。
文章轉載自微信公眾號“架構師之路”




























