当前位置: 首页 > article >正文

达梦数据库-统计信息收集-记录

达梦数据库-统计信息收集-记录总结1统计信息收集统计信息主要是描述数据库中表和索引的大小及数据分布状况等信息。比如表的行数、块数、平均每行的大小、索引的高度、叶子节点数以及索引字段的行数等。统计信息对于CBO基于代价的优化器生成执行计划具有直接影响。例如在嵌套循环连接中需要选择小表作为驱动表哪个是小表完全取决于统计信息中记录的数据量信息。此外访问一个表是否要走索引关联查询采用关联方式等都是CBO基于统计信息确定的。1.1手动收集--收集指定用户下所有表所有列的统计信息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自动收集当全表数据量变化超过设定阈值后可自动更新统计信息。--打开表数据量监控开关参数值为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, --间隔频率默认 1FREQ_SUB_INTERVAL INT, --间隔频率与 FREQ_INTERVAL 配合使用FREQ_MINUTE_INTERVAL INT, --间隔分钟默认为 1440STARTTIME VARCHAR(128), --开始时间默认为 22:00DURING_START_DATE VARCHAR(128), --重复执行的起始时间默认 1900/1/1 MAX_RUN_DURATION INT, --允许的最长执行时间(秒)默认不限制ENABLE INT --0 关闭1 启用默认为 1 );*/--示例SP_SET_PARA_VALUE(1,AUTO_STAT_OBJ,1);SP_SET_PARA_VALUE(1, MONITOR_MODIFICATIONS,1);SP_CREATE_AUTO_STAT_TRIGGER(1, 1, 1, 1439,3:00, 2023/9/20,10800,1);1.3查看统计信息经过 GATHER_TABLE_STATS、GATHER_INDEX_STATS 或 GATHER_SCHEMA_STATS 收集之后展示。 返回两个结果集一个是索引的统计信息另一个是直方图的统计信息dbms_stats.table_stats_show(模式名,表名);dbms_stats.index_stats_show(模式名,索引名);dbms_stats.COLUMN_STATS_SHOW(模式名,表名,列名);1.4删除统计信息--表DBMS_STATS.DELETE_TABLE_STATS(模式名,表名,分区名,...);--模式DBMS_STATS.DELETE_SCHMA_STATS(模式名,,,...);--索引DBMS_STATS.DELETE_INDEX_STATS(模式名,索引名,分区表名,...);--字段DBMS_STATS.DELETE_COLUMN_STATS(模式名,表名,列名,分区表名,...);1.5操作示例1.5.1示例需求描述某用户环境数据库有多个用户模式每个用户模式下有非常多的表同时有少部分表特别大直接通过整个模式方式收集时间特别长超过10小时。处理思路用户模式下所有表都是小表按照模式收集。用户模式下有大表和小表小表汇总按照模式表批量执行收集大表单独执行或者大表按照列收集。涉及收集命令--收集指定用户下所有表所有列的统计信息DBMS_STATS.GATHER_SCHEMA_STATS(username,100,TRUE,FOR ALL COLUMNS SIZE AUTO);--收集指定用户下某表统计信息DBMS_STATS.GATHER_TABLE_STATS(username,table_name,null,100,TRUE,FOR ALL COLUMNS SIZE AUTO);--收集某表某列的统计信息STAT 100 ON table_name(column_name);--收集单个索引统计信息示例DBMS_STATS.GATHER_INDEX_STATS(username,IDX_T2_X);1.5.2环境准备创建表索引插入测试数据drop table test.t1;drop table test.t2;create table test.t1(id int,info varchar2(100));create table test.t2(id int,info varchar2(100));create index test.t1_index on TEST.t1(info);create index test.t2_index on TEST.t2(info);DECLAREi NUMBER : 1;BEGINWHILE i 100000 LOOPinsert into test.t2(ID, info) VALUES(i, 在这里编写你要执行的SQL语句sdsdsdsdsds||i);i : i 1;END LOOP;END;commit;1.5.3查询表和索引的统计信息call DBMS_STATS.COLUMN_STATS_SHOW(TEST, t1,id);call DBMS_STATS.COLUMN_STATS_SHOW(TEST, t1,info);call DBMS_STATS.TABLE_STATS_SHOW(TEST, t1);call DBMS_STATS.TABLE_STATS_SHOW(TEST, t2);call DBMS_STATS.INDEX_STATS_SHOW (TEST, t1_index);call DBMS_STATS.INDEX_STATS_SHOW (TEST, t2_index);1.5.4查询数据库所有用户、模式、表大小--查看所有模式select * from dba_objects where object_type SCH;select name from sysobjects where type$SCH;--模式与用户关系select a.name as username, b.name as schenma from sysobjects a inner join sysobjects b on a.id b.pid where b.subtype$ is null order by username desc;--查某模式下的表select * from dba_objects where object_type TABLE and ownerTEST--查某模式下的索引select * from dba_objects where object_type INDEX and ownerTEST--查看所有模式select * from dba_objects where object_type SCH;select name from sysobjects where type$SCH;--模式与用户关系select a.name as username, b.name as schenma from sysobjects a inner join sysobjects b on a.id b.pid where b.subtype$ is null order by username desc;--查某模式下的表select * from dba_objects where object_type TABLE and ownerTEST--查某模式下的索引select * from dba_objects where object_type INDEX and ownerTEST--查表大小和条数selectowner,table_name,table_used_pages(owner, table_name)*(page()/1024.0)/1024.0 SIZE_MB,SF_GET_TABLE_COUNT(A.OWNER, A.TABLE_NAME) TAB_COUNTfrom dba_TABLES A WHERE A.OWNER in (模式1,模式2) order by 3 desc ;1.5.5如果某个模式下都是小表--收集指定用户下所有表所有列的统计信息DBMS_STATS.GATHER_SCHEMA_STATS(username,100,TRUE,FOR ALL COLUMNS SIZE AUTO);1.5.6如果某个模式下有超大表(1)小表和大表分批拼接生成统计信息的语句create table TAB_STATS as selectowner,table_name,table_used_pages(owner, table_name)*(page()/1024.0)/1024.0 SIZE_MB DBMS_STATS.GATHER_TABLE_STATS(||OWNNAME||owner||,||TABNAME||table_name||,||ESTIMATE_PERCENT100,||METHOD_OPTFOR ALL COLUMNS SIZE AUTO,||CASCADETRUE,||DEGREE4);AS gather_sqlfrom dba_TABLES AWHERE A.OWNER in (TEST) and table_used_pages(owner, table_name)*(page()/1024.0)/1024.01000--查询批量执行的命令放入脚本disql SYSDBA/xxxxxxlocalhost:5237 -E select gather_sql from sysdba.TAB_STATS /home/dmdba/TAB_STATS.sql--修改脚本/home/dmdba/TAB_STATS.sql--执行nohup disql SYSDBA/xxxxxxlocalhost:5237 \/home/dmdba/TAB_STATS.sql /home/dmdba/output.log 212大表单独执行--收集指定用户下某表统计信息DBMS_STATS.GATHER_TABLE_STATS(username,table_name,null,100,TRUE,FOR ALL COLUMNS SIZE AUTO);3如果按表执行也很慢大表按需求列单独执行示例STAT 100 ON TEST.t1(info);1.5.7根据最后统计时间生成统计统计信息批量SQL语句示例create table TAB_STATS as SELECTtable_owner,table_name,last_analyzed,DBMS_STATS.GATHER_TABLE_STATS(||OWNNAME||table_owner||,||TABNAME||table_name||,||ESTIMATE_PERCENT100,||METHOD_OPTFOR ALL COLUMNS SIZE AUTO,||CASCADETRUE,||DEGREE4);AS gather_sqlFROM dba_tab_statisticsWHERE table_owner IN (TEST) AND (last_analyzed IS NULL OR last_analyzed SYSDATE-7) ORDER BY table_owner,table_name;更多达梦数据库运维指南、在线文档、相关资料、社区在线提问以及技术分享访问 https://eco.dameng.com/

相关文章:

达梦数据库-统计信息收集-记录

达梦数据库-统计信息收集-记录总结 1统计信息收集 统计信息主要是描述数据库中表和索引的大小及数据分布状况等信息。比如:表的行数、块数、平均每行的大小、索引的高度、叶子节点数以及索引字段的行数等。统计信息对于CBO(基于代价的优化器&#xff0…...

原来赛事专用匹克球工厂还有这么多门道?你了解吗?

引言在匹克球运动蓬勃发展的当下,赛事专用匹克球的品质至关重要。而赛事专用匹克球工厂背后,其实隐藏着诸多门道。泉州凯瑞麟体育用品有限公司作为行业内的佼佼者,在这方面有着独特的技术与经验。核心材料与技术创新赛事专用匹克球对核心材料…...

终极指南:3分钟让Switch手柄变身PC游戏神器

终极指南:3分钟让Switch手柄变身PC游戏神器 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://gitcode.com/gh_mirrors…...

从零实现一个高性能 FTP 服务器(C++ / Linux)

目录一、搭建 TCP 服务器骨架服务器代码测试二、支持多客户端并发三、线程模型核心思路为什么使用 detach输出为什么会错乱四、函数重构重构后的结构五、FTP 协议基础控制连接数据连接六、命令解析行缓冲区命令解析为什么要转大写七、PASV 被动模式为什么需要数据连接&#xff…...

关注模块 API

关注用户 POST /api/v1/relations/followHeaders:Authorization: Bearer {token}Request: {"user_id": "target_user_id" }Response: {"code": 0,"data": {"relation_type": "following"} }接口语义设计 POST /…...

仪式感,从来与你无关

2.2万人点赞的扎心评论:仪式感,从来都与你无关 有2.2万个男生偷偷点了赞。 没有歇斯底里的控诉,没有长篇大论的抱怨,只有一句轻飘飘的陈述,和一句"兄弟,没绷住"。 但就是这两句话,像一根针,精准地扎破了无数男生藏在心里最深处的、不敢说出口的委屈。 01…...

LangChain 是什么?从零开始学会 LangChain 的工程实践指南

LangChain 是什么?从零开始学会 LangChain 的工程实践指南 1. 文章背景:为什么这个主题重要 在大模型应用开发中,很多人第一次接触 LangChain,是因为想快速做一个“基于大模型的应用”:例如知识库问答、RAG 检索增强生…...

Python EXE逆向工程完全指南:使用python-exe-unpacker快速反编译打包程序

Python EXE逆向工程完全指南:使用python-exe-unpacker快速反编译打包程序 【免费下载链接】python-exe-unpacker A helper script for unpacking and decompiling EXEs compiled from python code. 项目地址: https://gitcode.com/gh_mirrors/py/python-exe-unpa…...

Pure Live:3大平台聚合,打造你的专属纯净直播空间

Pure Live:3大平台聚合,打造你的专属纯净直播空间 【免费下载链接】pure_live A Flutter project can make you watch live with ease. 项目地址: https://gitcode.com/gh_mirrors/pu/pure_live 你是否厌倦了在多个直播应用间来回切换&#xff1f…...

【RK3588-AI-004】RK3588 AI专属依赖环境预装(Python、OpenCV、基础编译工具)

📖 专栏介绍 本专栏为RK3588 端侧AI开发零基础实战教程,专为嵌入式AI入门、模型部署、视觉开发学习者打造。全程实操、无废话、避坑优化,从零搭建RK3588专属AI开发环境,手把手教学,新手也能轻松上手。 ✅ 硬件适配&am…...

深入拆解 MySQL InnoDB 隔离级别:从 MVCC 到临键锁

前言 关于 MySQL InnoDB 的事务隔离级别,90% 的开发者都存在至少一个致命误区: 误区1:RR(可重复读) 临键锁 彻底解决了幻读误区2:Serializable 只是比 RR 加的锁更多,本质还是用 MVCC误区3&a…...

2026.5.12【芯片设计面试经验分享】上海车载芯片设计公司

一、主管面试 1、介绍下负责的cpu的九级流水线都有哪级? 指令预取、PC取指、指令译码、发射(双发射)、执行1(alu、运算)、执行2(乘法、移位)、访存、写回、提交/重排 2、负责的spyglass cdc 一般…...

编译和链接+预处理

编译(compile)和链接(link)在以前我们提到过,C语言是一门编译型的计算机语言,C语言的源代码都是文本文件,文本文件本身无法运行,电脑不能执行C语言代码,计算机能够执行的…...

数分-MySQL基础01

数分-MySQL基础01基础概念MySQL数据库对象MySQL的架构MySQL客户端和服务器端连接方式命令行连接方式图形化客户端连接SQL语言分类通用语法(所有数据库)DDL语句数据库DDL数据表DDL表字段DDL数据类型字段约束基础概念 数据库(Database, DB&…...

Spring AI Alibaba 1.x 系列【55】Interrupts 中断机制:静态中断源码分析

文章目录 1. interruptBefore 模式1.1 中断判断逻辑1.2 构建中断元数据1.3 返回中断响应1.4 初始化【中断执行】上下文1.5 合并状态(BUG)1.6 执行结束 2. interruptsAfter 模式2.1 设置 INTERRUPT_AFTER 标记2.2 动态计算下一个节点 3. 中断时机对比 1. …...

【Linux驱动开发】第11天:设备树(Device Tree)超详细全解:从诞生背景到工作原理

一、设备树的诞生背景:传统驱动的致命痛点 在设备树出现之前(Linux 3.0之前),Linux内核采用硬编码的方式描述所有硬件信息。这意味着: 每一个开发板的寄存器地址、中断号、GPIO号,都直接写死在驱动代码里换…...

【Linux驱动开发】第10天:设备树零基础入门——DTS/DTB/DTC全解+编译流程

目录 为什么需要设备树?传统驱动的终极痛点DTS/DTB/DTC 大白话定义核心区别三者关系完整编译流程图最简单的DTS示例语法解析设备树编译与反编译实操命令内核如何加载和使用设备树核心总结面试必背考点 1. 为什么需要设备树?传统驱动的终极痛点 在设备树…...

TowerPersonalProperty.cs

TowerPersonalProperty 是塔的标准化攻击组件,攻击节奏(CD管理)子弹发射(从对象池获取并配置)视觉表现(旋转、动画、音效、特效)经济交互(升级/出售价格计算与金币变更)它…...

[工具] 数学题库生成器(小学,初中,高中全包括) 面向中小学数学教学的自动出题工具,覆盖从小学一年级到高中三年级共 7 个学段、33 种题型

数学题库生成器(小学,初中,高中全包括) 基本覆盖各个年级的重点题型生成,并导出为word,可以显示解题步骤。# 数学题库生成器 MathMaster 数学题库生成器(MathMaster)是一款面向中小学…...

硬件工程师,每天5分钟(5)——为什么 DDR5 最怕地不好?回流路径,才是高速设计真正的灵魂

讲透: 回流路径 为什么 Split Plane 最危险 为什么加地孔有时候能救命 为什么 GPS 会被 DDR 干扰 为什么 EMC 挂的根因常是地 🚗《硬件工程师,每天5分钟》第5篇 🔥《为什么 DDR5 最怕地不好?回流路径,才是高…...

11.三层网络VXLAN

先把之前基于flat模式创建的虚机,全部删除 控制节点配置:1.修改配置文件/etc/neutron/neutron.conf 将[DEFAULT]区域 core_plugin ml2 service_plugins 修改为 core_plugin ml2 service_plugins router allow_overlapping_ips True2.修改/etc/neutro…...

数采网关的应用与特点

摘要在工业自动化、智能制造和物联网(IoT)快速发展的背景下,数据采集网关(数采网关)作为连接现场设备与上层管理系统的关键枢纽,发挥着至关重要的作用。它能够实现工业设备数据的实时采集、协议转换、边缘计…...

第2章:文档加载与智能分块——RAG的第一步

本章你将收获:支持PDF(含表格)、Word、Markdown、网页、CSV等10+格式的完整加载代码;五种分块策略的深度对比(固定大小、递归字符、语义、文档结构、按标题);元数据保留与增强的工程方法;处理100页混合格式技术手册的完整实战;以及分块参数调优的最佳实践。 📌 本章…...

西门子PLC对接须知:从通信到编程的实战指南

在工业自动化领域,西门子S7系列PLC凭借强大的功能和广泛的兼容性,成为众多企业的首选。无论是设备集成、数据采集还是系统升级,掌握PLC对接的核心要点,是保障项目高效落地的关键。本文将从通信连接、编程架构、数据处理三个维度&a…...

ComfyUI全面掌握-知识点详解——ComfyUI 开发与扩展基础(开发指南+环境搭建)

本文为「ComfyUI 全面掌握」系列第 23 篇,是高阶进阶章节的第一篇知识点详解博客。作为开发系列的起点,本文将带你系统了解 ComfyUI 社区贡献流程,并手把手搭建完整的自定义节点开发环境,为后续的节点开发与发布奠定坚实的技术基础…...

STM32矩阵按键详解——4×4行列扫描与非阻塞消抖(硬件总结六)

前言 独立按键虽然简单,但当产品需要十几个按键时,每个按键独占一个GPIO的接法就变得很不经济。矩阵按键通过“行列”的交叉结构,仅用NM个GPIO即可驱动NM个按键。以最常见的44矩阵为例,16个按键仅需8个GPIO,引脚利用率…...

鸿蒙中的自由流转

鸿蒙自由流转是 ‌HarmonyOS(鸿蒙系统)‌ 实现多设备协同的核心能力之一,旨在打破设备边界,让应用和服务在不同终端间无缝流转,提升用户体验。‌什么是鸿蒙自由流转?‌鸿蒙自由流转是指用户在多个搭载 Harm…...

RUST编程学习.2语法

目录 前言 一、思维导图 二、Rust语法专属 1.迭代器 2.生命周期 总结 前言 在进行编译器下载后,就可以写代码进行编译调试了,在这之前就是要学习rust语法,在学习的过程中我整理了一版思维导图,最直观的感觉就是rust的语法很…...

【SSD】闪存1

闪存的特点 闪存是非易失存储器,掉电了数据也不会丢失,但是闪存不能够覆写,必须按块擦除,按页写入。 闪存的基本单元 闪存的基本单元是Cell,一种类Nmos的双层浮栅MOS管 MOS管 首先理解什么是MOS管:(金…...

性价比高的国产PLM软件公司

在制造业领域,不少企业都面临着研发效率低下、协同困难等问题。比如某电子制造企业,研发部门与生产部门之间信息沟通不畅,图纸版本管理混乱,导致产品研发周期延长,生产成本增加,新品上市时间比预期晚了近30…...