3 万字,关系型数据库性能体系,设计和效率提升

目录

  • 前言
  • 一、预期的读者和阅读建议
  • 二、数据库模型设计规范
    • 1、数据库建模原则性规范
    • 2、实体型之间关系认定规范
    • 3、范式化 1NF 的规范
    • 4、范式化 2NF 的规范
    • 5、范式化3NF的规范
    • 6、反范式化冗余字段使用规范
    • 7、数据库对象命名基本规范
      • 7.1、遵循行业规范
      • 7.2、简单命名原则
      • 7.3、字符范围原则
      • 7.4、字母全部大写或小写原则
      • 7.5、勿用保留词原则
      • 7.6、同义性原则
      • 7.7、富有含义原则
      • 7.8、扩展性原则
  • 三、表的设计规范
    • 1、命名规范
      • 1.1、表的命名规范
      • 1.2、字段的命名规范
    • 2、表的设计规范
      • 2.1、指定表空间规范
      • 2.2、表的主键规范
      • 2.3、表的外键规范
      • 2.4、字段类型及宽度的规范
      • 2.5、一个表所含字段总长度的规范
      • 2.6、一个表所含字段访问频繁度的规范
      • 2.7、大对象字段(BLOB,CLOB)使用规范
      • 2.8、关于字段能否为 NULL 值
      • 2.9、关于冗余列的规范
      • 2.10、使用注释的规范
      • 2.11、一个表所含数据量的规范
      • 2.12、增量同步表的设计规范
    • 3、字段类型规范
      • 3.1、不使用会发生隐式转换:INTEGER,FLOAT
      • 3.2、不使用过时老类型:RAW,LONG,LONG RAW
      • 3.3、国家字符集相关
      • 3.4、不能使用大对象:BLOB,CLOB,NCLOB
      • 3.5、不能使用高精度:TIMESTAMP
      • 3.6、关于 CHAR 字段
  • 四、分区表的设计规范
    • 1、表空间及分区表的概念
      • 1.1、表空间
      • 1.2、分区表
    • 2、表分区的具体作用
    • 3、表分区的优缺点
    • 4、分区表设计规范
      • 4.1、不使用全局索引
      • 4.2、RANGE 分区的规范
      • 4.3、LIST 分区的规范
      • 4.4、HASH 分区的规范
      • 4.5、RANGE-LIST 分区的规范
      • 4.6、RANGE-HASH分区的规范
  • 五、索引的设计规范
    • 1、索引分类
      • 1.1、单列索引与复合索引
      • 1.2、唯一索引与非唯一索引
      • 1.3、B 树索引、位图索引与函数索引
    • 2、命名规范
    • 3、索引设计规范
      • 3.1、指定表空间规范
      • 3.2、主键索引的规范
      • 3.3、唯一约束索引的规范
      • 3.4、外键列索引的规范
      • 3.5、复合索引的规范
      • 3.6、函数索引的规范
      • 3.7、位图索引的规范
      • 3.8、反向索引的规范
      • 3.9、分区索引的规范
      • 3.10、索引重建的规范
  • 六、其他数据库对象设计规范
    • 1、命名规范
    • 2、视图设计规范
      • 2.1、尽量使用简单的视图,避免使用复杂的视图
      • 2.2、按照必要性原则建立视图
    • 3、存储过程、函数、触发器的设计规范
      • 3.1、关于触发器的设计
  • 七、SQL访问规范
    • 1、尽量不要写复杂的 SQL
    • 2、避免使用 SELECT *
    • 3、INSERT 时需写全列名
    • 4、进行 DML 操作时使用 CTAS 进行数据备份
    • 5、大数据量 DML 操作分多次执行
    • 6、使用绑定变量,降低高硬解析
    • 7、选择最有效率的表名顺序
    • 8、关注WHERE子句中的连接顺序
    • 9、用 EXISTS 替代 IN
    • 10、用表连接替换 EXISTS
    • 11、用 EXISTS 替换 DISTINCT
    • 12、尽量用 union all 替换 union
    • 13、使用 DECODE 函数来减少处理时间
    • 14、尽量避免用 Order by
    • 15、用 Where 子句替换 HAVING 子句
    • 16、减少多表关联
    • 17、避免重复访问
      • 17.1、使用 group by
      • 17.2、用表更新表
      • 17.3、竖向显示变横向显示
    • 18、完成事务及时 commit
    • 19、数据库连接及时关闭
    • 20、索引的使用
      • 20.1、避免在索引列上使用函数或运算
      • 20.2、避免改变索引列的类型
      • 20.3、避免在索引列上使用 NOT
      • 20.4、用 >= 替代 >
      • 20.5、避免在索引列上使用 IS NULL 和 IS NOT NULL
      • 20.6、带通配符(%)的 like 语句
      • 20.7、总是使用索引的第一个列
  • 八、编码及注释规范
    • 1、编码规范
      • 1.1、避免隐式的数据类型转换
      • 1.2、不要将空的变量值直接与比较运算符(符号)比较
      • 1.3、跨行语句,第一关键字应当左对齐
      • 1.4、Insert … values 和 update 语句书写规范
      • 1.5、Insert … select 语句书写规范
      • 1.6、避免使用嵌套的IF语句
      • 1.7、减少控制语句的检查次数
      • 1.8、语句涉及多个表时,使用别名来限定字段名
      • 1.9、其他编码规范
    • 2、注释规范
      • 2.1、注释语法
      • 2.2、每个块和过程开发放置注释
      • 2.3、代码注释应放在其上方或右方
      • 2.4、其他注释规范
  • 九、PLSQL优化
    • 1、性能问题分析
    • 2、PLSQL 优化的核心思想
    • 3、PLSQL优化示例
      • 3.1、减少对表的查询
      • 3.2、避免循环(游标)里面嵌查询
      • 3.3、group by 优化
      • 3.4、删除重复记录
      • 3.5、COMMIT 使用
      • 3.6、批量数据插入
      • 3.7、索引使用优化
      • 3.8、使用提示(Hints)
      • 3.9、表上存在过旧的分析
      • 3.10、表上存在并行
      • 3.11、关于索引建立
      • 3.12、Expain Plan 分析索引使用
  • 目的

本文已经作者授权发布
作者: 数据治理体系 公众号: 数据治理体系

前言

本文档详细定义了关系型数据库的:

  • 数据库模型设计规范
  • 表的设计规范
  • 分区表的设计规范
  • 索引的设计规范
  • 其他数据库对象的设计规范
  • SQL的访问规范
  • 编码和注释规范

并详细介绍了 SQL 调优 的关注点和常用方法,作为数据库规划、设计、开发及维护人员的技术参考资料。

用以指导关系型数据库的设计和开发,突出性能是设计出来的,证明质量也是可以设计出来的。

只要理解透这篇,关系型数据库性能提升 30% 不是问题!

一、预期的读者和阅读建议

本文档预期的读者:

  • 项目经理
  • 开发经理
  • DBA
  • 数据结构管理师
  • 系统设计师
  • 开发师
  • 测试师

等相关岗位的人员。

你可能感兴趣的:(DBA,实战系列,数据库,dba,sql)