mysql规范使用和常用命令整理

数据库设计规范

  • 数据库和表的字符集统一使用 UTF8。如果数据库中有存储 emoji 表情的需要,字符集需要采用 utf8mb4 字符集
  • 所有表和字段都需要添加注释。使用 comment 从句添加表和列的备注,进行数据字典的维护。
  • 禁止在表中建立预留字段,预留字段的命名很难做到见名识义,无法确认存储的数据类型,所以无法选择合适的类型。预留字段类型的修改,会对表进行锁定
  • 禁止在数据库中存储图片,文件等大的二进制数据。通常文件很大,会短时间内造成数据量快速增长,数据库进行数据库读取时,通常会进行大量的随机IO操作,文件很大时,IO操作很耗时。 通常存储于文件服务器,数据库只存储文件地址信息。
  • 所有数据库对象名称必须使用小写字母并用下划线分割
  • 所有数据库对象名称禁止使用 MySQL 保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来)。
  • 数据库对象的命名要能做到见名识意,并且最好不要超过 32 个字符。
  • 临时库表必须以 tmp_ 为前缀并以日期为后缀,备份表必须以 bak_ 为前缀并以日期(时间戳)为后缀。
  • 所有存储相同数据的列名和列类型必须一致(一般作为关联列,如果查询时关联列类型不一致会自动进行数据类型隐式转换,会造成列上的索引失效,导致查询效率降低)
  • 尽可能把所有列定义为 NOT NULL,索引 NULL 列需要额外的空间来保存,所以要占用更多的空间
  • 使用 TIMESTAMP(4个字节)或 DATETIME 类型(8个字节)存储时间,TIMESTAMP 存储的时间范围 1970-01-01 00:00:01 ~ 2038-01-19-03:14:07。TIMESTAMP 占用4字节和INT相同,但比INT可读性高。超出TIMESTAMP取值范围的使用DATETIME类型存储。

mysql是关系型数据库。数据库设计遵从三大范式(NF Normal Format)。参考链接:https://www.jianshu.com/p/3e97c2a1687b

第一大范式:原子性。例如省市区分散列而非一个地址字段

第二大范式:确保表中每列与主键相关

第三大范式:早2的基础上,确保每列和主键直接相关而不是简介相关

mysql 优化

sql索引、表结构、系统配置、硬件等4个方面优化。从左到右成本越来越高,优化效率变低

 

 

 

 

 

 

 

你可能感兴趣的:(资料,mysql)