高性能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='接口调用日志';