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最后一位插入到对应的分表

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