Zi 字媒體
2017-07-25T20:27:27+00:00
SQL 資料庫-分表 介紹
資料來源: https://mp.weixin.qq.com/s?__biz=MzAxNjk4ODE4OQ==&mid=2247486061&idx=1&sn=526e5a333dca5a161ab94bf983c89ece&chksm=9bed2b1fac9aa2090f1f481856e2507ea4fdfe53ef3e3bf71d298c209ce772004c91ef43193e&scene=0&xtrack=1&key=025fc9d00514bc5b0b9d7fa26a7d50af2b08b284a3472387b89b468be641e5a97a09b091c83dfe767e0c6a622d340efd1ae4af46edd696970d5957a06a425532920c9e7855c3e40b6f0a4bcc47087f62&ascene=1&uin=MjIwODk2NDgxNw==&devicetype=Windows+10&version=62060833&lang=zh_TW&pass_ticket=krEBQXCP2cjGoYrL1TVwq7kDEdnZClwjhYIAYCgFnnqlKXEwaT0ryW0wHVFjFwn2
分表時機:
根據我的經驗來看,當某張表的數據量已經達到千萬甚至上億,同時日增數據量在2% 以上。
當然這些數字並不是絕對的,最重要的還是對這張表的寫入和查詢都已經影響到正常業務執行,比如查詢速度明顯下降,數據庫整體IO 居高不下等。
分表方法:
▲按照範圍劃分
比如我們可以將某張表的創建時間按照日期劃分存為月表;也可以將某張表的主鍵按照範圍劃分,比如【1~10000】在一張表, 【10001~20000】在一張表,以此類推。
好處是自帶水平擴展,不需要過多干預。
缺點是可能會出現數據不均勻的情況(比如某個月請求暴增)
▲hash+mod(hashd)
▲Range + Hash
寫了
5860316篇文章,獲得
23313次喜歡