数据库规范,我熬夜写了一篇文章
数据库命名规范
由小写字母、数字(一般不需要)和下划线组成。禁止使用“-”,名称准确,含义明确。
表格
- 根据不同的业务类型,使用了不同的前缀,由小写字母组成和下划线
- 长度在30个字符内控制❀备注备票prefixprefixdescription
business表 tb_ 关系表 tr_ 历史表ts_ 日志表 tl_xx_log 系统表、字典表、代码表 sys_ 临时表 tmp_ 禁止使用 备份表 备份表视图 view_ 避免
engine
使用标准 In nodb引擎(5.5后标配)
支持事务,行级锁,在高竞争下有更好的恢复和更好的性能。
字符集--拔剑登上艾草????
- 数据库和表的字符集统一,尽量使用UTF8(根据业务需要)♻ ❀ 更好的兼容性和统一字符集,可以避免字符集转换造成的丢失字符。比较之前必须转换几个字符集,这会导致索引错误
- 关联UTF8和UTF8MB4字段会导致索引错误
- 除特殊情况外,禁止建表。 )以减少因字符集不一致而导致性能问题的风险。
- 无特殊要求,禁止指定表COLLATE -----
COLLATE的主要功能是排序规则和检索规则。默认的utf8字符集是utf8_general_ci,默认的utf8mb4字符集是utf8mb4_general_ci。结尾的 ci 表示不区分大小写。
COLLATE 会影响 ORDER BY 语句的顺序、WHERE 条件中按大小和字符数过滤的结果以及 DISTINCT、、 HAVING 的查询结果声明。例如:select * from test where name like 'A%',在utf8_bin字符集下,无法检索到'abc'字段,并且排序时abc和abc的顺序不一致。
- 仔细选择 row_format
Barracuda:新文件格式。它支持所有 InnoDB 行格式,包括新的行格式: COMPRESSED 和 DYNAMIC
在 msyql 5.7.9 及更高版本的变量格式中,_b-row-format 确定为默认值 是 DYNAMIC
db默认的innodb_file_format是barracuda,默认的innodb_default_row_format是dynamic;其中,COMPRESSED压缩比经测试仅为1/2,但读写有额外的CPU开销,且解压后按照原大小申请内存,在高竞争情况下可能会造成轻微的性能问题。
动态行格式,列存储是否放在离页页上主要取决于行大小。它将把该行中最长的列放在离页上,直到数据页可以存储接下来的两行。如果 TEXT 或 BLOB 列
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。