达梦数据库系列—39.统计信息详解

news2024/9/9 7:51:04

目录

达梦统计信息

举例

统计信息的缺点

统计信息管理

手动收集

自动收集

查看统计信息

更新统计信息

删除统计信息


达梦统计信息

达梦数据库的统计信息分为表统计信息,列统计信息,索引统计信息。

  1. 表:计算表的行数、所占的页数目、平均记录长度。
  2. 列:统计列数据的分布特征。
  3. 索引:统计索引列的数据分布特征。

直方图(Histogram)是列级别统计信息的一种,它主要用来描述数据库中列值的分布情况,适用于数据分布不均匀的场景。有了直方图,数据库可以针对不同的参数值准确地计算出选择率,保证计划的正确性。

列和索引将采样的数据按照不同的分布特征生成相应的直方图。有两种类型的直方图:频率直方图和等高直方图。生成直方图时,如果不同值少于 1 万个则用频率直方图,否则用等高直方图。

频率直方图

频率直方图为列中的每个不同值维护一个行数信息,这种直方图适用于NDV(不同值个数)比较小的场景。可以想象,如果有一张表格记录了一家公司的全部员工信息(每一个人一行信息),对于“籍贯”这一栏,不同值的个数很小(全国约有40个省、直辖市和行政区),我们可以为该列建立一个频率直方图,优化器通过该直方图可以知道该公司每个省或者直辖市的员工有多少人。

等高直方图

等高直方图收集的是一个数值分布的信息,适用于NDV比较大的场景。一般建立的过程是将全部的记录根据该列进行排序,然后把排好序的记录分成N个桶,其中每个桶内行数大约为M/N(M是总行数)。继续考虑上面的员工信息表,如果表中有一列是“年纳税总额”,我们可以对该列收集等高直方图,从而很容易准确的估计出该公司“年纳税总额超过10万”的人数。

举例

--构造测试环境

CREATE TABLE TEST_TJ(ID INT,AGE INT);

BEGIN    FOR I IN 1..100000 LOOP

                  INSERT INTO TEST_TJ VALUES(MOD(I,9700),TRUNC(RAND * 120));

               END LOOP;

               COMMIT;

END;

--创建系统包

SP_CREATE_SYSTEM_PACKAGES(1);

--更新统计信息

DBMS_STATS.GATHER_TABLE_STATS(USER, 'TEST_TJ',null,100,false, 'FOR ALL COLUMNS SIZE AUTO'); --更新所有列

SP_COL_STAT_INIT_EX(USER,'TEST_TJ','ID',100); --更新单列

--查看统计信息:频率直方图

 DBMS_STATS.COLUMN_STATS_SHOW(USER, 'TEST_TJ','AGE');

--1.类型:频率直方图

--2.ENDPOINT_VALUE样本值: 1

--3.ENDPOINT_HEIGHT 样本值的个数:70

SELECT COUNT(*) FROM TEST_TJ WHERE AGE=1; --70

--查看统计信息:等高直方图

DBMS_STATS.COLUMN_STATS_SHOW(USER, 'TEST_TJ','ID');

--解读统计信息

--1.类型:等高直方图

--2.ENDPOINT_VALUE样本值: 30

--3.ENDPOINT_HEIGHT小于样本值大于前一个样本值的个数:329

  SELECT COUNT(*) FROM TEST_TJ WHERE ID<30;  --329

--4.ENDPOINT_KEYGHT样本值的个数:11

  SELECT COUNT(*) FROM TEST_TJ WHERE ID=30;  --11

--5.ENDPOINT_DISTINCT小于样本值大于前一个样本值之间不同样本的个数: 30

  SELECT COUNT(DISTINCT ID) FROM TEST_TJ WHERE ID<30;  --30

统计信息的缺点

  1. 对于等高直方图,CBO会认为每个区间中的数据都是近似均匀分布的,实际上数据可能分布非常崎岖。
  2. 等高直方图区间越多,统计越精确,而实际上数量有限,最大为1000。

例:数据分布不均匀导致范围扫描时CBO估算不准确

drop table t1;

--插入10万条,C1数据分布均匀

create table t1 as select level c1,level c2 from dual connect by level<=100000;

--插入2万条C1=100,使该值数量很大,造成C1分布不均匀

insert into t1 select 100,level from dual connect by level<=20000;

--给C1列创建索引

create index idx01 on t1(c1);

--搜集统计信息

dbms_stats.gather_index_stats(user,'IDX01');

--查看统计信息,100这个值有20001行

dbms_stats.index_stats_show(user,'IDX01');

--测试=值查询,估算正确

select * from t1 where c1=100;

--测试范围查询

select * from t1 where c1 between 90 and 110;

--此时估算行数错误,应该有20001行,不该走索引,计划不对

统计信息管理

手动收集

--收集指定用户下所有表所有列的统计信息:

DBMS_STATS.GATHER_SCHEMA_STATS('username',100,TRUE,'FOR ALL COLUMNS SIZE AUTO');

--收集指定用户下所有索引的统计信息:

DBMS_STATS.GATHER_SCHEMA_STATS('usename',1.0,TRUE,'FOR ALL INDEXED SIZE AUTO');--或 收集单个索引统计信息:

DBMS_STATS.GATHER_INDEX_STATS('username','IDX_T2_X');

--收集指定用户下某表统计信息:

DBMS_STATS.GATHER_TABLE_STATS('username','table_name',null,100,TRUE,'FOR ALL COLUMNS SIZE AUTO');

--收集某表某列的统计信息:

STAT 100 ON table_name(column_name);

自动收集

--打开表数据量监控开关,参数值为 1 时监控所有表,2 时仅监控配置表

SP_SET_PARA_VALUE(1,'AUTO_STAT_OBJ',2);

--设置 SYSDBA.T 表数据变化率超过 15% 时触发自动更新统计信息

DBMS_STATS.SET_TABLE_PREFS('SYSDBA','T','STALE_PERCENT',15);

--配置自动收集统计信息触发时机

SP_CREATE_AUTO_STAT_TRIGGER(1, 1, 1, 1,'14:36', '2020/3/31',60,1);

/*

函数各参数介绍

SP_CREATE_AUTO_STAT_TRIGGER(

    TYPE                    INT,    --间隔类型,默认为天

    FREQ_INTERVAL         INT,    --间隔频率,默认 1

    FREQ_SUB_INTERVAL    INT,    --间隔频率,与 FREQ_INTERVAL 配合使用

    FREQ_MINUTE_INTERVAL INT,    --间隔分钟,默认为 1440

    STARTTIME              VARCHAR(128), --开始时间,默认为 22:00

    DURING_START_DATE    VARCHAR(128), --重复执行的起始时间,默认 1900/1/1

    MAX_RUN_DURATION    INT,    --允许的最长执行时间(秒),默认不限制

    ENABLE                  INT     --0 关闭,1 启用  --默认为 1

);

*/

查看统计信息

--用于经过 GATHER_TABLE_STATS、GATHER_INDEX_STATS 或 GATHER_SCHEMA_STATS 收集之后展示。

dbms_stats.table_stats_show('模式名','表名');

--用于经过 GATHER_TABLE_STATS、GATHER_INDEX_STATS 或 GATHER_SCHEMA_STATS 收集之后展示。 返回两个结果集:一个是索引的统计信息;另一个是直方图的统计信息。

dbms_stats.index_stats_show('模式名','索引名');

–用于经过 GATHER_TABLE_STATS、GATHER_INDEX_STATS 或 GATHER_SCHEMA_STATS 收集之后展示。

dbms_stats.COLUMN_STATS_SHOW('模式名','表名','列名');

更新统计信息

--更新已有统计信息

DBMS_STATS.UPDATE_ALL_STATS();

删除统计信息

--表

DBMS_STATS.DELETE_TABLE_STATS('模式名','表名','分区名',...);

--模式

DBMS_STATS.DELETE_SCHMA_STATS('模式名','','',...);

--索引

DBMS_STATS.DELETE_INDEX_STATS('模式名','索引名','分区表名',...);

--字段

DBMS_STATS.DELETE_COLUMN_STATS('模式名','表名','列名','分区表名',...);

达梦技术社区:达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1963643.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二百五十、Linux——visudo 命令编辑 /etc/sudoers 文件时报错 “/etc/sudoers 忙,请稍后重试”

一、目的 在Linux上用visudo 命令编辑 /etc/sudoers 文件时报错&#xff0c;/etc/sudoers 忙&#xff0c;请稍后重试 [roothurys23 ~]# sudo visudo visudo: /etc/sudoers 忙&#xff0c;请稍后重试 二、原因分析 1 另一个 visudo 实例正在运行 如果另一个用户或同一个用户…

Mirror学习笔记(一) 简介

文章目录 一、常规学习&#xff1a;Mirror核心功能有服务器和主机 二、时间戳批处理时间戳 三、TCP和UDP四、CCU(同时在线人数)五、SyncDirection(同步方向)六、RTT&#xff08;往返时间&#xff09;七、Connection Quality&#xff08;连接质量&#xff09;八、Lag Compensati…

django档案馆集中管理系统-计算机毕业设计源码31775

目录 摘要 Abstract 第一章 绪论 1.1 选题背景及意义 1.2 国内外研究现状 1.3 研究方法 第二章 相关技术介绍 2.1 MySQL简介 2.2 Python 2.3 Django框架 2.4 Pycharm简介 第三章 档案馆集中管理系统系统分析 3.1 系统可行性分析 3.1.1 技术可行性 3.1.2 经济可行…

FFmpeg研究

1.FFmpeg介绍 FFmpeg的全称是“Fast Forward Moving Picture Expert Group”&#xff0c;组件由命令行应用程序和函数库两部分组成。通俗概括来说&#xff0c;FFmpeg 是一个免费的开源程序库&#xff0c;一个多媒体音视频处理分析工具软件&#xff0c;且提供命令行方式调用&am…

Linux(1)--VMware的安装与配置

Linux Linux是一种自由和开放源码的类Unix操作系统&#xff0c;由林纳斯托瓦兹&#xff08;Linus Torvalds&#xff09;于1991年首次发布。Linux以其高效性、灵活性和稳定性而闻名&#xff0c;广泛应用于各种计算机硬件设备中&#xff0c;包括手机、平板电脑、路由器、视频游戏…

【Win10】记一次蓝屏修复

最近电脑蓝屏了好多次&#xff0c;错误代码为&#xff1a;IRQL_NOT_LESS_OR_EQUAL 直接搜这个错误代码不太好找原因&#xff0c;于是按照这篇文章[1]来打开错误日志文件。 需要先在windows的应用商店中下载WinDbg 然后&#xff0c;打开目录 C:\Windows\Minidump &#xff0c;…

React 学习——组件内通信(兄弟之间)

A组件 > B组件 核心思路&#xff1a; 1、A组件先通过子传父的方式把数据传给父组件App 2、App拿到数据后通过父传子的方式再传递给B组件 import { useState } from "react" function A({onGetMsg}){const AMsg 我是A组件的消息return (<div><button…

如何实现全国产业园数量扩展,小编带你共同探讨树莓集团产业园运营模式

在当前快速发展的经济环境中&#xff0c;产业园区作为促进经济发展和技术创新的重要平台&#xff0c;扮演着越来越重要的角色。通过精心策划的战略布局与科学严谨的发展规划&#xff0c;树莓集团依托持续的创新驱动与科技引领&#xff0c;成功实现了全国产业园数量的显著扩展与…

【HTML入门】第二十课 - 【实战】做一个侧边栏菜单

这一小节&#xff0c;我们还是继续练习纯HTML标签的内容&#xff0c;多练一些&#xff0c;把HTML标签练熟。这就像练武功前的扎马步和一些基本功&#xff0c;功底越深&#xff0c;后边才能练更高深的武功。 这一小节&#xff0c;我们用纯HTML标签做一个侧边栏菜单的功能。就像这…

仿写讯飞AI生成PPT大纲组件

效果 别的不说先上效果 难点 树的实现 &#xff1a;需要递归自身&#xff0c;有丶难度。但是对于各位应该是有手就彳亍。双亲节点样式 &#xff1a;可以观察到双亲节点在连接线左侧是有内容的&#xff0c;叶子节点则没有。连接线&#xff1a;可以观察到双亲节点是实心圆点&a…

华为交换机Telnet配置

华为交换机Telnet配置 一、Telnet概述与作用 1、Telnet简介 Telnet&#xff08;Telnet协议&#xff09;是一种用于远程登录到计算机或网络设备的协议。它允许用户在本地计算机上通过网络连接到远程计算机或设备&#xff0c;并在远程计算机上执行命令和操作。Telnet协议最初是…

SpringCloudAliababa中使用最新版的Seata实现分布式事务

SpringCloud中使用Seata实现分布式事务 Hello&#xff0c;兄弟们好&#xff0c;我是Feri&#xff0c;最近整理了最新的基于Seata-Server2.0实现分布式事务的demo&#xff0c;希望对你有所帮助&#xff0c;有任何问题&#xff0c;可以随时沟通交流&#xff0c;在成为技术大牛的路…

如何处理selenium Webdriver中的文本框?

文本框或字段在整个网页中广泛使用,本文将介绍如何在Java中使用Selenium Webdriver处理文本框。可以有各种文本字段,我们将尝试包括其中的大多数,并执行各种操作,如清除和输入文本。 我们将使用我们的Selenium游乐场网站- testkru,与各种文本框进行交互。您也可以使用同一…

昇思25天学习打卡营第27天|munger85

Vision Transformer图像分类 Vit是最新的用了transformer架构的图像模型&#xff0c;在很多比赛都获得了大奖&#xff0c;是非常优秀的架构。而且据说cnn其实只是vit的一个子集&#xff0c;cnn的卷积其实就是vit在很小的范围做了注意力机制。非常有意思 整个架构就好像这样 图…

七天打造一套量化交易系统:Day6-人工智能在量化投资中的应用

七天打造一套量化交易系统&#xff1a;Day6-人工智能在量化投资中的应用 步骤一&#xff1a;数据获取步骤二&#xff1a;对股票样本进行初步处理步骤三&#xff1a;遗传算法选股遗传算 kmeans 类的主要代码 步骤四&#xff1a;回测结果 遗传算法是一种基础的人工智能算法&#…

springboot惠农服务平台-计算机毕业设计源码50601

目录 1 绪论 1.1 研究背景 1.2研究意义 1.3论文结构与章节安排 2 惠农服务平台app 系统分析 2.1 可行性分析 2.2 系统功能分析 2.3 系统用例分析 2.4 系统流程分析 2.5本章小结 3 惠农服务平台app 总体设计 3.1 系统功能模块设计 3.2 数据库设计 表access_token (…

成品库存周转率报表(一)

文章目录 成品库存周转率报表(一)每日库存结存到表单《历史库存信息》报表逻辑报表设计过滤框简单账表界面存储过程,根据传入条件获取并计算返回数据报表服务插件简单账表绑定数据源插件绑定权限,发布,授权即可访问成品库存周转率报表(一) 每日库存结存到表单《历史库存…

基于域名的虚拟主机,基于ip的域名主机,综合项目eleme

查看nginx配置文件 不看空行&#xff0c;不看注释&#xff0c;查找 [rootstaticserver ~]# grep -Ev "#|^$" /usr/local/nginx/conf/nginx.conf 把原有的文件备份 [rootstaticserver ~]# cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.…

虚拟化数据恢复—XenServer VPS不可用如何恢复数据?

虚拟化数据恢复环境&#xff1a; 某品牌R720服务器&#xff0c;4块STAT硬盘通过H710P阵列卡组建了一组raid10磁盘阵列。服务器上部署XenServer虚拟化平台&#xff0c;虚拟机安装Windows Server系统&#xff0c;作为Web服务器使用&#xff0c;运行SQL Server数据库。共有2个虚拟…

智能巡航,守护蓝天绿水:无人机视频技术如何高效监督非法排污行为

随着工业化进程的加速和环境保护意识的日益增强&#xff0c;非法排污行为成为了威胁生态环境、影响公众健康的重大问题。传统的排污监测手段往往受限于人力成本、覆盖范围及效率等因素&#xff0c;难以实现对广袤区域和隐蔽排污点的有效监控。而无人机技术的飞速发展&#xff0…