【DB吐槽大会】第51期 - 缺乏SQL审查功能

简介: 大家好,这里是DB吐槽大会,第51期 - 缺乏SQL审查功能

背景


1、产品的问题点

  • 缺乏SQL审查功能

2、问题点背后涉及的技术原理

  • 业务上线通常伴随SQL的变更、新增或DDL操作等. 这些数据库操作有什么风险? 在大多数时候取决于开发者或DBA的判断. 例如:
  • SQL的基准是什么? 吞吐诉求、RT诉求. 数据库是否满足业务需求?
  • 新增的SQL会不会导致数据库性能瓶颈, 并且影响已有业务.
  • SQL 是不是处于优化执行路径? 需不需要加索引? 需不需要加hint? 需不需要改写SQL等? 需不需要锁表? 需不需要在低峰期操作?
  • 回退预案是什么?
  • 操作流程是什么?
  • 哪些操作有删库跑路风险? 例如DROP或truncate的DDL、没有条件或条件绝对为true的update或delete.

3、这个问题将影响哪些行业以及业务场景

  • 通用

4、会导致什么问题?

  • 没有SQL审查功能, 每次业务上线都是提着脑袋在干. 随时有删库跑路、业务雪崩等风险.

5、业务上应该如何避免这个坑

  • 规范操作流程
  • 增加变更审查流程
  • 增加回退预案
  • 增加备份流程

6、业务上避免这个坑牺牲了什么, 会引入什么新的问题

  • 人力成本增加, 同时取决于审查人员的责任心、经验、技术能力等. 同样存在风险.

7、数据库未来产品迭代如何修复这个坑

  • 希望在内核层面支持SQL 审查功能.
  • 输入SQL、并发、吞吐、RT等诉求.
  • 返回报告: 评估变更的耗时, SQL的模拟QPS和RT, 数据库的资源消耗等.
  • 揭示风险, 例如无法满足RT|QPS预期、资源打满、删库跑路、雪崩 等风险.
  • 给出SQL优化建议等.
  • 希望能支持快速闪回, 变更快速回退能力.
  • 希望支持定时变更, 无人值守变更. 解放劳动力.



相关文章
|
23天前
|
SQL 运维 关系型数据库
一款 SQL 自动检查神器,再也不用担心 SQL 出错了,自动补全、回滚等功能大全
一款 SQL 自动检查神器,再也不用担心 SQL 出错了,自动补全、回滚等功能大全
29 0
|
8天前
|
缓存 算法 关系型数据库
SQL DB - 关系型数据库是如何工作的
• 绿:O(1)或者叫常数阶复杂度,保持为常数(要不人家就不会叫常数阶复杂度了)。 • 红:O(log(n))对数阶复杂度,即使在十亿级数据量时也很低。 • 粉:最糟糕的复杂度是 O(n^2),平方阶复杂度,运算数快速膨胀。 • 黑和蓝:另外两种复杂度(的运算数也是)快速增长。 如果要处理2000条元素: • O(1) 算法会消耗 1 次运算 • O(log(n)) 算法会消耗 7 次运算 • O(n) 算法会消耗 2000 次运算
原生php实现大案例(特色:不登录不能使用功能 注册 登录 文件上传 发帖 列表页 详情页 )提供sql
原生php实现大案例(特色:不登录不能使用功能 注册 登录 文件上传 发帖 列表页 详情页 )提供sql
|
23天前
|
SQL Java 数据库连接
Mybatis之Mybatis的各种查询功能和特殊SQL的执行
【1月更文挑战第3天】 一、MyBatis的各种查询功能 1、查询一个实体类对象 2、查询一个List集合 3、查询单个数据 4、查询一条数据为map集合 5、查询多条数据为map集合 1、方法一 2、方法二 二、特殊SQL的执行 1、模糊查询 2、批量删除 3、动态设置表名 4、添加功能获取自增的主键
144 1
Mybatis之Mybatis的各种查询功能和特殊SQL的执行
|
23天前
|
SQL 流计算
Flink SQL提供了行转列的功能,可以通过使用`UNPIVOT`操作来实现
【1月更文挑战第1天】Flink SQL提供了行转列的功能,可以通过使用`UNPIVOT`操作来实现
176 0
|
23天前
|
SQL Java 关系型数据库
在IDEA中配置MySQL数据库连接以及在使用mybatis时设置sql语句的代码提示功能
在IDEA中配置MySQL数据库连接以及在使用mybatis时设置sql语句的代码提示功能
|
6月前
|
SQL 数据库
数据库原理—SQL数据定义功能(九)(2)
数据库原理—SQL数据定义功能(九)
|
6月前
|
SQL 数据库
数据库原理—SQL数据定义功能(九)(1)
数据库原理—SQL数据定义功能(九)
|
11月前
|
SQL 安全 JavaScript
SQL Server——自动化功能
不管是任何地方,数据备份都是很重要的一个环节,需要定时对数据库指定数据备份,为它设计一个备份的策略。但是如果指定某个人定时定点的进行备份这是很麻烦的,这时我们就可以使用SQL Server的自动化功能来完成备份操作。
|
SQL Java 数据库连接
MyBatis各种SQL操作及执行添加功能获取自增的主键
MyBatis各种SQL操作及执行添加功能获取自增的主键
118 0