高性能MySQL实战(一):表结构

最近因需求改动新增了一些数据库表,但是在定义表结构时,具体列属性的选择有些不知其所以然,索引的添加也有遗漏和不规范的地方,所以我打算为创建一个高性能表的过程以实战的形式写一个专题,以此来学习和巩固这些知识。

1. 实战

我使用的 MySQL 版本是 5.7,建表 DDL 语句如下所示:根据需求创建 接口调用日志 数据库表,请大家浏览具体字段的属性信息,它们有不少能够优化的点。

CREATE TABLE `service_log` ( `id` bigint(100) NOT NULL AUTO_INCREMENT COMMENT '主键', `service_type` int(10) DEFAULT NULL COMMENT '接口类型', `service_name` varchar(30) DEFAULT NULL COMMENT '接口名称', `service_method` varchar(10) DEFAULT NULL COMMENT '接口方式', `serial_no` int(10) DEFAULT NULL COMMENT '消息序号', `service_caller` varchar(15) DEFAULT NULL COMMENT '调用方', `service_receiver` varchar(15) DEFAULT NULL COMMENT '接收方', `status` int(3) DEFAULT '10' COMMENT '状态 10-成功 20-异常', `error_message` varchar(200) DEFAULT NULL COMMENT '异常信息', `message` text DEFAULT NULL COMMENT '报文内容', `create_user` varchar(50) DEFAULT NULL COMMENT '创建者', `create_time` datetime NOT NULL COMMENT '创建时间', `update_user` varchar(50) DEFAULT NULL COMMENT '更新者', `update_time` datetime NOT NULL COMMENT '更新时间', `is_delete` tinyint(1) NOT NULL DEFAULT '0' COMMENT '刪除标志', `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '时间戳', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='接口调用日志';