前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL开发规范之数据类型设计规范

MySQL开发规范之数据类型设计规范

作者头像
jeanron100
发布2023-09-04 17:29:38
1580
发布2023-09-04 17:29:38
举报

说来惭愧,这是耽误了将近1年的工作,一直零零散散拖着没做完,昨天总算是卯着劲出了一个版本。

最初是打算更新一版MySQL开发规范,把一些新的技术栈和思路都更新迭代,与时俱进,但是做了一段时间,发现这件事情比自己想得要复杂。比如:

1)索引设计规范,就得从更高的维度去思考什么样的索引是最合适的,需要有哪几个重点要素考量,这个话题就开水考验我的思考能力了。

2)SQL设计规范,什么样的SQL是最合理的,也需要提炼SQL质量模型,还得带一些通用性,同时具备实用性,否则就都是废话了。

先说说总体的成果,SQL开发规范我是打算拆分为5个部分,包括数据库命名规范,对象结构设计规范,SQL优化设计规范、高并发设计规范和开发规范落地指南,这是循序渐进,从基础到进阶落地的内容组织形式。

对这五个部分的定位和标签是:

1)数据库命名规范:规范始于命名

2)对象结构设计:结构设计是基石

3)SQL优化设计规范:SQL性能无小事

4)高并发设计规范:并发高阶必备技

5)开发规范落地指南:快速稳落地

我先列出一部分的内容,比如数据类型设计规范,是属于对象结构设计章节的。

数据库类型主要以MySQL为例进行说明,主要包括数值类型,字符类型和日期类型:

数值类型

注:

1)用户pid数据类型,根据平台统一规划应设计为bigint unsigned

2)MySQL中每个数据表中字段数量尽可能少且字段长度尽可能小,可以用int的则不能用bigint,能用tinyint的不能用int;

3)对于布尔值的设置,建议使用TINYINT来代替布尔类型

4)不建议使用ENUM类型,可使用TINYINT来代;

5)用DECIMAL代替FLOAT和DOUBLE存储精确浮点数;

6)使用无符号整型(UNSIGNED)存储非负整数;

7)在存储IP地址时,不建议存储成字符型数据,建议使用INT UNSIGNED,建议从应用层面控制IP地址的格式转换;

字符类型

注:

1)对于可变长字符串VARCHAR,只分配真正需要的空间;

2)多个数据表中都有相同属性字段时,数据类型和属性需保持一致;如同样表示用户名的字段,需要在各相关表中都设置同样的属性:varchar(20)

3)尽可能不使用TEXT、BLOB类型,这类大对象在数据库存储和使用时,比较容易产生存储和性能问题;

4)数据库中不允许存储大文件,或者照片,可以将大对象放到其他存储上,数据库中存储它的路径。

日期类型

注:

1)普遍情况,建议使用datetime,因为datetime和timestamp的存储占用空间不同,datetime占用8个字节,timestamp占用4个字节,所以说timestamp支持的时间范围要窄一些。范围为:1970-01-01 08:00:01到2038-01-19 11:14:07 而datetime支持的时间范围则要大很多。1000-01-01 00:00:00 ~ 9999-12-31 23:59:59

2)如果对于时间类型字段需要设置动态的默认值,在MySQL 5.6.5以前不支持,需要使用timestamp,或者不设置默认值。

3)date数据类型的精度较低,如果精度为日,则优先使用。

4)日期和时间字段精确度到“秒”,建议使用unix时间戳格式存储(数据类型为int),在展示的时候需要注意一下时区问题;每条记录都需要有插入时间字段,如果有需要,可以增加记录修改时间字段;重要的数据记录和数据操作,可以记录日志。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-06-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档