ITPub博客

首页 > 数据库 > 国内数据库 > 【手摸手玩转 OceanBase 141】其他相关规范

【手摸手玩转 OceanBase 141】其他相关规范

原创 国内数据库 作者:13579NB232 时间:2023-01-19 16:34:30 0 删除 编辑

本文介绍在 OceanBase 数据库其他相关规范。

导数的规范

datax 导出后需拆成多个小文件,再逐个执行数据库导入,每个小文件控制在 1GB 以内

其他

  • 禁止  force index、 ignore index、 straight_join、 SQL_no_cache 在生产环境使用。

  • 禁止使用  BEGIN...END, LOOP...END LOOP, REPEAT...UNTIL...END REPEAT, WHILE...DO...END WHILE 等的复合语句

    说明

    复杂逻辑都应该放在应用内处理,避免写复杂SQL。

  • 页面搜索严禁左模糊或者全模糊。

    说明

    SQL 中包含 like 查询,一定要使用最左前缀匹配。

  • 分区表必须带分区键,禁止不带分区键扫描所有分表。

  • 不推荐 JOIN 三个以上的表。

  • 在多表连接的查询中,驱动表须要选择结果集较小的表。

  • 禁止写成多层子查询嵌套的 SQL 语句,推荐改写成表顺序连接的格式。

  • 禁止在  INSERT、 UPDATE、 DELETE、 REPLACE 语句中进行多表连接操作。

  • 利用覆盖索引来进行查询操作,来避免回表操作。

  • 减少使用自定义函数、自定义类型、存储过程。

    说明

    存储过程不利于定位问题,移植性差,另外从性能角度而言,存储过程 SQL 一般均是有着多表, 或多判断等语句,这些语句本身性能消耗严重,执行耗时长,会导致系统并发性能下降,如果存储过程中有算数运算,也会导致严重的性能问题。

  • 减少使用非逻辑条件查询  != <> not

  • 减少聚合函数的使用

  • 建议避免  in 操作,带  in 的子查询尽量改写成  join,如必须要使用, in list 中的常量个数应小于 100 。

  • 建议语句中使用  WHERE 或  LIMIT,否则会扫全表。

  • 控制中间结果集大小。

    说明

    有  distinct、 order by 和  group by 子句的查询,中间结果集限制 1 万行以内,对于超过 1 万行的大结果集的排序、分组,需要放到程序端实现。

  • hash 分区的个数建议是2的幂次数,否则会造成分区间数据不均匀。

  • 不建议使用全文检索功能。

  • 不建议使用事件  EVENT 功能。

  • 程序中禁止使用或操作 OceanBase 库和 test 库,禁止创建 test 或以 test 开头的库。

  • 禁止在 OceanBase 中使用用户自定义变量。

  • 数据库中不要进行业务的实时统计或者汇总等计算操作,可导出后利用其它工具或者在线下备份库中完成。

  • 避免使用 HAVING。

    HAVING 子句在  GROUP BY 处理后筛选,而  WHERE 子句在处理期间筛选数据,所以  WHERE 子句可以消除很多排序和  I/O 时间。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70026124/viewspace-2932852/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2023-01-18

  • 博文量
    184
  • 访问量
    93198