DROP TABLE IF EXISTS `insur_test`;
CREATE TABLE `insur_test` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`clues_code` bigint DEFAULT NULL COMMENT '线索编码',
`creator` varchar(32) DEFAULT NULL COMMENT '创建人',
`create_time` TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
`updater` varchar(32) DEFAULT NULL COMMENT '更新人',
`update_time` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间',
`deleted` int DEFAULT '0' COMMENT '是否删除',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=183 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='线索表';
在插入数据时,如果 create_time update_time 不指定则存储当前时间的数据,如果指定则存储指定的数据
在数据修改时。update_time会自动东西时间
datetime类型与timestamp类型有何区别
datetime 若带有毫秒时,类型 TIMESTAMP 占用 7 个字节,而 DATETIME 无论是否存储毫秒信息,都占用 8 个字节。
timestamp 可以存储表示时区
DATETIME性能比timestamp更好,timestamp带有时区,需要系统底层进行转换
要调用操作系统底层系统函数 __tz_convert(),而这个函数需要额外的加锁操作,以确保这时操作系统时区没有修改。所以,当大规模并发访问时,由于热点资源竞争,会产生两个问题。
- 性能不如 DATETIME: DATETIME 不存在时区转化问题。
- 性能抖动: 海量并发时,存在性能抖动问题。
为了优化 TIMESTAMP 的使用
[mysqld]
time_zone = "+08:00"
MySQL的timestamp类型是4个字节,最大值是2的31次方减1,也就是2147483647,转换成北京时间就是2038-01-19 11:14:07
最后修改于 2023-04-28 16:40:00
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

