【DB吐槽大会】第41期 - 无法预测大查询剩余执行时间

简介: 大家好,这里是DB吐槽大会,第41期 - 无法预测大查询剩余执行时间

背景


1、产品的问题点

  • 世界上最痛苦的事情莫过于
  • 打开了一个网页, 结果鼠标漏斗不停的转呀转.
  • 执行了1条SQL, 但是不知道它什么时候能跑完.
  • PG 无法预测大查询剩余执行时间

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

  • 用户提交SQL后, 数据库经过parse, query rewrite, plan, execute几个阶段执行. 用户等待执行结果的返回.
  • 执行过程并不知道跑到哪个NODE了, 已执行的NODE代价估算是多少, 花了多少时间? 还有哪些NODE没有执行, 分别的代价估算是多少, 预计还要花多久?
  • 执行计划是什么, 当前执行到哪里了, 每个步骤花了多少时间, 扫描了多少条记录, 多少个数据块, IO时间多少, op CPU 多少. 还剩多少时间. 返回多少行, 已返回多少行, 花了多少时间.
  • 《DB吐槽大会,第12期 - 没有自动成本校准器》

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

  • 通用

4、会导致什么问题?

  • 当任务不可预期时, 无法对此作出正确的响应, 例如
  • 报表类的业务, 每天2点开始跑报表, 早上8点老板们需要拿到报表结果进行重大决策, 现在是6点半, 报表还没跑完, 还剩多久能跑完? 8点前能不能跑完? 接下来应该怎么办?

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

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

  • 管理复杂度增加.

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

  • 通过执行计划的每个node的代价以及已执行的过程和代价(行选择性估算、代价 与 实际行选择性、耗费时间等对齐估算)进行校准, 估算剩余时间.
  • 用户可配置
  • 开关控制: 打开或关闭
  • 阈值控制: 当代价大于多少的时候, 跟踪执行过程



相关文章
|
4月前
|
SQL
leetcode-SQL-1211. 查询结果的质量和占比
leetcode-SQL-1211. 查询结果的质量和占比
20 0
|
4月前
|
SQL
leetcode-SQL-1867. 最大数量高于平均水平的订单
leetcode-SQL-1867. 最大数量高于平均水平的订单
11 0
|
SQL
|
SQL 移动开发 Oracle
不同的SQL平台,如何取前百分之N的记录?
最近帮业务部门梳理业务报表,其中有个需求是就算某指标等待时间最长的前百分之十,其实就是对等待时长进行倒序排序后,取结果集的前百分之十。 这个需求在SQL Server和Oracle上都很容易实现,甚至是在MySQL 8.0也很容易实现,只是恰好我们业务数据库是MySQL 5.7 先给大家介绍下不同数据库平台的实现方法。
不同的SQL平台,如何取前百分之N的记录?
|
SQL 测试技术
详解SQL中连续N天都出现的问题
在我们日常统计过程中,像这种要统计连续N天都出现的问题比较普遍。比如统计连续三天销售额大于10万的是哪几天,连续一周客流量大于100的是哪几天等等。 今天我们用一个示例,来告诉大家该如何求解类似的问题。
详解SQL中连续N天都出现的问题
|
SQL 程序员 数据库
SQL 查找是否"存在",别再 COUNT 了,很耗费时间的
根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要SELECT COUNT(*) 呢? 无论是刚入道的程序员新星,还是精湛沙场多年的程序员老白,都是一如既往的COUNT
|
SQL 数据库
一个计算SQL语句在HANA数据库执行花费的DB和CPU时间的统计工具
一个计算SQL语句在HANA数据库执行花费的DB和CPU时间的统计工具
|
SQL 监控 关系型数据库
【DB吐槽大会】第40期 - PG 缺少qps计数器
大家好,这里是DB吐槽大会,第40期 - PG 缺少qps计数器
|
SQL 算法 搜索推荐
【DB吐槽大会】第77期 - PG 不支持索引随机采样
大家好,这里是DB吐槽大会,第77期 - PG 不支持索引随机采样
|
存储 NoSQL 关系型数据库
【DB吐槽大会】第56期 - PG 分析场景IO消耗较大, 计算有巨大性能提升空间
大家好,这里是DB吐槽大会,第56期 - PG 分析场景IO消耗较大, 计算有巨大性能提升空间