优化前分析
1、DDL
CREATE TABLE `risk_third_data` ( `id_card` char(20) NOT NULL COMMENT '身份证号码', `mobile` char(11) NOT NULL COMMENT '手机号码', `name` varchar(100) DEFAULT NULL COMMENT '姓名', `json_data` text COMMENT 'json数据', `json_data2` text COMMENT '在网json数据', `format_data` text COMMENT '可视化数据', `format_data2` text COMMENT '在网时长', `advice` varchar(100) DEFAULT NULL COMMENT '建议', `score` int(10) DEFAULT NULL COMMENT '分数', `status` tinyint(1) unsigned DEFAULT '1' COMMENT '风控来源', `query_num` smallint(4) unsigned DEFAULT '1' COMMENT '查询次数', `last_query_at` int(10) unsigned DEFAULT NULL COMMENT '最后请求时间', `hst_query_list` text COMMENT '历史查询记录', UNIQUE KEY `id_card` (`id_card`,`mobile`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='顶象风控查询';
2、数据量
33W+(均行长41KB)
3、字段分析
- id_card、mobile、name:调取风控接口请求参数
- json_data:接口返回风控数据
- json_data2:在网时长接口返回数据
- format_data、format_data2:接口返回的json数据格式化后的html元素,使用频率不高
- advice:风控建议,取自json_data.RiskStrategy.final_decision,使用频率不高且可直接从json_data获取
- score:风控分数,取自json_data.RiskStrategy.Rule.weight,使用频率不高且可直接从json_data获取
- status:暂无意义,固定值为1,但该表只记录丁象风控数据
- query_num:暂无使用处
- last_query_at:使用频率高,用于判断上次请求数据是否过时
- hst_query_list:无使用场景且字段占用空间大
优化方案
1、拆表方式:垂直分表
2、优化字段:
- format_data、format_data2:该字段信息可直接通过json_data数据格式化返回,建议移除字段或移至新表
- hst_query_list:移至新表
3、优化后DDL
CREATE TABLE `risk_third_data` (`id_card` char(20) NOT NULL COMMENT '身份证号码',`mobile` char(11) NOT NULL COMMENT '手机号码',`name` varchar(100) DEFAULT NULL COMMENT '姓名',`json_data` text COMMENT 'json数据',`json_data2` text COMMENT '在网json数据',`advice` varchar(100) DEFAULT NULL COMMENT '建议',`score` int(10) DEFAULT NULL COMMENT '分数',`status` tinyint(1) unsigned DEFAULT '1' COMMENT '风控来源',`query_num` smallint(4) unsigned DEFAULT '1' COMMENT '查询次数',`last_query_at` int(10) unsigned DEFAULT NULL COMMENT '最后请求时间',UNIQUE KEY `id_card` (`id_card`,`mobile`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='顶象风控查询';
CREATE TABLE `risk_third_data_base` (`id_card` char(20) NOT NULL COMMENT '身份证号码',`mobile` char(11) NOT NULL COMMENT '手机号码',`hst_query_list` text COMMENT '历史查询记录',UNIQUE KEY `id_card` (`id_card`,`mobile`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='顶象风控查询额外信息表';