MySQL分表測試初體驗

一、背景

    系統上線之後,隨着數據量越來越大,數據庫壓力也增大,故須對系統的數據表進行分表處理。

二、需求

1、 meituansdk_meituan_settlement表,根據orderId最後一位進行分表,由原來的1張分成10張表;

2、進行舊錶的數據遷移

三、測試驗證

1、數據表分表驗證:

根據orderId最後一位進行分表,分成10張表,驗證是否正常分成 meituansdk_meituan_settlement

-000、meituansdk_meituan_settlement_001到meituansdk_meituan_settlement_009,共10張表

2、驗證舊數據遷移是否正常、驗證新數據分表是否正常:

-- 以 meituansdk_meituan_settlement_000分表爲例

SELECT

t1.orderId,t1.`status`,t1.foodAmount,t1.settleAmount,t1.pushTime,COUNT(orderId)

FROM

`meituansdk_meituan_settlement` AS t1

GROUP BY RIGHT(orderId,1)

-- 根據主表的orderid最後一位進行分組,10個組√,尾號0的82條

SELECT

t1.orderId,t1.`status`,t1.foodAmount,t1.settleAmount,t1.pushTime,COUNT(orderId)

FROM

`meituansdk_meituan_settlement_000` AS t1

-- WHERE RIGHT(orderId,1) = 0

-- 註釋查詢條件和不註釋查詢條件,是不是數量相等,即查詢000表是不是都是以0結尾,√共84條數據

SELECT DISTINCT

t1.orderId,t1.`status`,t1.foodAmount,t1.settleAmount,t1.pushTime

FROM

`meituansdk_meituan_settlement` AS t1,

meituansdk_meituan_settlement_000  AS t2

WHERE

t1.orderId = t2.orderId

-- 查詢兩表之間orderid相同的記錄,去重82條,000表有84條數據,說明有2條數據是新插入的

SELECT

t1.orderId,t1.`status`,t1.foodAmount,t1.settleAmount,t1.pushTime

FROM

`meituansdk_meituan_settlement_000` AS t1

WHERE t1.orderId not IN(SELECT orderId from meituansdk_meituan_settlement WHERE RIGHT(orderId,1)=0)

-- 驗證000表是不是相對於總表尾數0差異的數據是2條√剛好是2條

-- 上述方法,可以驗證其餘的9個表

-- 以上SQL只能10個表一個一個進行驗證,而且只覈對了表結構和數據的數量,沒有對每個值進行驗證,後續優化

3、業務測試驗證:

針對業務插入數據,不會再更新meituansdk_meituan_settlement表,只會根據orderId最後一位插入到對應的分表

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