首页 > 数据库 >【YashanDB知识库】由于hist_head$中analyze time小于tab$中analyze time导致的sql语句执行慢

【YashanDB知识库】由于hist_head$中analyze time小于tab$中analyze time导致的sql语句执行慢

时间:2024-09-27 11:36:14浏览次数:1  
标签:head analyze time hist sql 执行

本文内容来自YashanDB官网,具体内容请见https://www.yashandb.com/newsinfo/7459465.html?templateId=1718516

问题现象

某局点yashandb cpu使用率100%,经线上分析是由于几个sql执行慢,其中一个sql为简单的单行等值绑定变量过滤+排序。

经分析执行计划,相对以前有所变化,走了另外一个索引(效率低)。

问题的风险及影响

sql语句执行慢,客户的业务受到影响。操作系统cpu 100%可能导致宕机。

问题影响的版本

22.2.10.100

问题发生原因

hist_head$中表对应列的analyze time小于tab$中表的analyze time,在执行到estColEqualOrNotParam方法时,由于第一个参数colStats为null导致获得默认selectivity(0.04)后退出。而实际选择率为0.00003,相差甚远,优化器最终估算出来的cost不准,选择了错误的执行计划。

解决方法及规避方式

客户现网通过将错误的索引invisiable后规避。

问题分析和处理过程

现网错误的执行计划及估算出来的rows及cost(sql语句中有hint,可以忽略,实际不加hint也走的是这个执行计划):

过滤条件中sub_account_id的选择性很好,表的总数据量为6千万左右,count(distinct)值为200万左右。很明显,上图中执行计划估算出来的rows是明显失真的。

实际正确的执行计划及cost如下(where语句中多了几个predicate,不影响总量本质):

实际优化器在加载列的统计信息用于估算时,如果hist_head$中analyze time小于tab$中analyze time,或者hist_head$中没有表中相关列的数据,那么就会用默认的selectivity(0.04)来做过滤条件估算,最终导致执行计划走偏。

经验总结

hist_head$中存放了列的普通统计信息,histgrm$中存放了列的直方图信息

标签:head,analyze,time,hist,sql,执行
From: https://www.cnblogs.com/YashanDB/p/18435339

相关文章

  • Mybatis Plus多源数据库和自动更新updateTime问题
    多源数据库配置1、依赖配置implementation'com.baomidou:mybatis-plus-boot-starter:3.5.2'implementation'com.baomidou:dynamic-datasource-spring-boot-starter:3.5.2'2、配置文件spring:datasource:dynamic:primary:master#设置默认的数据......
  • 11 time&datetime
    UTC/GMT:世界时间本地时间:本地时区的时间。全球总共:24个时区东12+西12区4.3.1time模块p180time.time(),时间戳:1970-1-100:00当前经历的秒数time.sleep(10),等待秒数。time.timezone得到相差的秒数,跟电脑设置的时区有关系。#https://login.wx.qq.com/cgi-bin/......
  • Cookie和Header
    1.CookiefromtypingimportUnionfromfastapiimportCookie,FastAPIapp=FastAPI()@app.get("/items/")asyncdefread_items(ads_id:Union[str,None]=Cookie(default=None)):return{"ads_id":ads_id}http://127.0.0.1:8000/i......
  • 搭建jforum报错zeroDateTimeBehavior CONVERT_TO_NULL convertToNull
    今天搭建项目的时候,本来马上就搭好了,结果在安装的时候报错:"Theconnectionproperty‘zeroDateTimeBehavior’acceptablevaluesare:‘CONVERT_TO_NULL’,‘EXCEPTION’or‘ROUND’.Thevalue‘convertToNull’isnotacceptable."照着网上的教程找了好久都不行,最后自......
  • 【解决了一个小问题】aws s3 sdk 中的自定义header设置哪些不参与aws v4 签名
    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!cnblogs博客zhihuGithub公众号:一本正经的瞎扯在通过代理访问s3服务端的时候,s3服务端返回类似的错误信息:<?xmlversion="1.0"encoding="UTF-8"standalone="yes"?><Error><Code>AuthorizationQueryParametersE......
  • ECE-GY 6183 Real-Time Digital Signal Processing
    Real-Time Digital Signal Processing LabECE-GY 6183 / ECE-UY 4163Fall 2024This course is an introductiontothe real-time implementationofdigital signal processing (DSP) algorithms, with an emphasis on audio signal processing an......
  • connect timed out 详解及排查
    在HTTP通信中,超时(timeout)机制用于限制客户端等待服务器响应的时间,避免因网络、服务器问题导致客户端长时间等待。超时的类型多种多样,每种类型的超时都会有对应的错误信息。以下是常见的ConnectTimeout问题的原因排查和解决方案。HTTP中的各种Timeout详解及对应的错误信息......
  • onnxruntime c++ 推理例子
    资源释放的问题。onnxruntime的对象release是无效的,从接口源码上只是将指针赋空。并未实际释放。要实现释放,需要以指针形式实现。一个例子如下:#include<onnxruntime_cxx_api.h>voidtestimage(){Matimage=imread("ae14.jpg",IMREAD_UNCHANGED); //创建会话选项 O......
  • WPF Image show picture in high resolution periodically via System.Timers.Timer
    <Windowx:Class="WpfApp411.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft......
  • 论文研读——《RF-Diffusion: Radio Signal Generation via Time-Frequency Diffusion
    本文的是有关无线电信号生成的一篇文章。目录论文简介名词补充现有RF数据生成模型论文贡献RF-Diffusion时频扩散时频扩散——正向销毁过程时频扩散——正向销毁过程时频扩散——逆向恢复过程  时频扩散——条件生成分层扩散Transformer分层扩散Transformer——......