更新时间:2025-03-11 gmt 08:00

数据库使用规范-九游平台

命名规范

  • 对象名(如库、表、索引等)长度应小于等于63字节,注意某些字符(如中文)可能占用多个字节。
  • 对象名不要使用数据库保留关键字,不能以“pg”和数字开头。
  • 数据库名称长度可在1~63个字符之间,由字母、数字、或下划线组成,不能包含其他特殊字符,不能以“pg”和数字开头,且不能和rds for postgresql系统库重名。rds for postgresql系统库包括postgres、template0、template1,系统库不支持修改。

表设计规范

  • 表结构应当提前设计,避免经常变更表结构,如添加字段,修改数据类型等。
  • 单表字段数量不应太多,建议不超过64。
  • 需要定期清理数据的表,建议创建分区表,比如按时间分区,通过drop或truncate对应的分区子表清理数据。
  • 表字段应使用合适的数据类型,如不要使用字符类型存储数值或者日期数据。
  • 使用数值类型时应注意精度和范围,使用时不要超过类型的限制。

索引设计规范

  • 使用逻辑复制时,对需要进行逻辑复制的表设计主键或者唯一键。
  • 使用外键时,一定要设置外键被删除或更新的动作,例如on delete cascade。
  • 在使用频繁(如查询、排序)的字段上创建索引。
  • 对于固定条件的查询,建议创建并使用部分索引。
  • 对于经常使用表达式作为查询条件的查询,建议创建并使用表达式索引。
  • 索引也会占用存储,单表索引数量不宜太多,比如单列索引个数小于5,复合索引个数小于3。

sql设计

  • 查询时指定返回需要的字段,不要返回用不到的字段。
  • 查询或比较字段是否为null时,只能使用is null或is not null条件。
  • 查询条件中,尽量使用not exists替代not in。
  • 聚合数据时,尽量使用union all代替union。
  • 删除数据时,尽量使用truncate代替全表delete。
  • 分批提交大事务中对数据的修改,防止事务提交或回滚时压力集中。
  • 创建函数时,应该定义函数易变性分类为对它们合法的分类中最严格的种类,而不是选择默认的volatile。volatile类函数调用并发过高可能导致新连接无法接入。

安全

  • 禁止将应用数据库对象所有者赋予“public”,必须赋予某个特定角色。
  • 数据库密码应具备一定复杂度, 禁止使用简单密码。
  • 应该为每个业务分配不同的数据库账号,禁止多个业务共用一个数据库账号。
  • 访问对象时,显式指定对象所在的模式,避免误访问到其他模式下的同名对象。

相关文档

网站地图