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

达梦数据库统计信息的导出导入

一、统计信息

对象统计信息描述了对象数据的分布特征。统计信息是优化器的代价计算的依据,可以帮助优化器较精确地估算成本,对执行计划的选择起着至关重要的作用。统计信息的收集频率是一把双刃剑,频率太低导致统计信息滞后,频率太高又影响查询性能,因此,系统管理员需要根据实际情况,合理安排统计信息收集的频率。

达梦数据库的统计数据对象分三种:表统计信息、列统计信息和索引统计信息。统计信息生成过程分三个步骤:

1. 确定采样的对象:根据数据对象,确定需要分析哪些数据。

1) 表:计算表的行数、所占的页数目、平均记录长度。

2) 列:统计列数据的分布特征。

3) 索引:统计索引列的数据分布特征。

2. 确定采样率。用户根据统计数据对象的大小,确定采样率。如缺省,则默认通过内部算法确定数据的采样率。

3. 生成统计信息。根据不同的数据对象生成不同的统计信息。

1)表:表的行数、所占的页数目、平均记录长度等汇总数据。

2)列和索引:将采样的数据按照不同的分布特征生成相应的直方图。有两种类型的直方图:频率直方图和等高直方图。根据算法分析表的数据分布特征(以不同值的数据量 1万个为分界线),确定直方图的类型。频率直方图的每个桶(保存统计信息的对象)的高度不同,等高直方图每个桶的高度相同。生成直方图时,如果不同值少于 1 万个则用频率直方图,否则用等高直方图。

在执行查询时,如果数据对象存在统计信息,代价算法可以根据统计信息中的数据,比较精确地计算出操作所需花费的成本,以此来确定连接方式、对象访问路径、连接顺序,选择最优的执行计划。

二、应用场景

随着数据库国产化进程的加快,越来越多的行业、越来越多的系统将选择我们的国产数据库,那么这个过程中必然会遇到大数据量系统迁移的情况,异构数据库迁移完成后,一定会在新替换的国产数据库中收集统计信息。在达梦数据库中,统计信息的导出导入,便适合应用于这种数据库数据量比较大,迁移异构数据库数据到DM数据库后统计信息收集耗时较长的场景。举例:假如客户原来使用A数据库,迁移到新数据库后,统计信息首次完全收集耗时会很长,那么为了缩短这一时间,可以在A数据库系统切换到国产数据库的上线演练过程中,将统计信息完全收集并导出,在上线当天将前期的统计信息导入上线的生产环境,以此来缩短收集统计信息的耗时,那么整体的时间窗口也将会大大减少。

三、具体操作

前提说明:假设存在两套达梦数据库,一套是进行过上线演练的DMA库(IP为192.168.10.100),一套是即将上线使用的DMB库(IP为192.168.10.200),其中DMA库已完成数据库统计信息的收集。

DMA库:

1、创建系统包

默认情况下,DM 在新建库第一次启动数据库服务时会自动创建除了 DMGEO、DBMS_JOB、DBMS_WORKLOAD_REPOSITORY 和 DBMS_SCHEDULER 之外的所有系统包。如果数据库没有做过换bin升级,此步可跳过,如不跳过,则执行创建系统包的系统存储过程时会重建指定的系统包。

--检查系统包是否创建,返回1表示已创建,返回0为表示未创建
SELECT SP_CREATE_SYSTEM_PACKAGES(1);
--创建(或重建)指定的系统包
SP_CREATE_SYSTEM_PACKAGES(1,'DBMS_STATS');

2、测试系统包的使用

--测试创建一个增加了前缀的临时统计信息表
DBMS_STATS.CREATE_STAT_TABLE('SYSDBA', 'OADB_ALLTB');
#其中SYSDBA为统计信息表的模式名,区分大小写;OADB_ALLTB为统计信息表名,区分大小写,系统实际创建的表会增加前缀。
--删除统计信息表
DBMS_STATS.DROP_STAT_TABLE ('SYSDBA', 'OADB_ALLTB');
#其中SYSDBA为统计信息表的模式名,区分大小写;OADB_ALLTB为创建时指定的统计信息表名,区分大小写。

3、把目标表的统计信息导出到指定的统计信息表中

--查看用户下的统计信息数量,第二步中指定了统计信息表创建到SYSDBA模式下,所以此处用SYSDBA查看
SELECT COUNT (*) FROM STAT$_OADB_ALLTB;
--备份统计信息,使用SYSDBA用户登陆数据库,执行下面备份语句
语法:DBMS_STATS.EXPORT_TABLE_STATS(OWNNAME, TABNAME, PARTNAME, STATTAB, STATID, CASCADE, STATOWN, STAT_CATEGORY);
参数详解OWNNAME 目标表的模式名,区分大小写。TABNAME 目标表名,区分大小写。PARTNAME 目标表分区名,如果不指定分区,则一起导出所有子表的统计信息,缺省为NULL。STATTAB 统计信息表名,区分大小写。STATID 由用户指定的统计信息标识名,缺省为空字符串。CASCADE 是否连列和索引的统计信息一起导出,缺省为 TRUESTATOWN 统计信息表的模式名,区分大小写,缺省为 NULL。STAT_CATEGORY 仅保留参数以兼容 ORACLE,功能暂未实现。
---单表
DBMS_STATS.EXPORT_TABLE_STATS('OA', 'OA_TABLE1', NULL, 'OADB_ALLTB', 'export stats test', TRUE, 'SYSDBA');
---多表
DECLARE
BEGIN FOR RS IN (SELECT OWNER,TABLE_NAME FROM DBA_TABLES WHERE OWNER IN ('USER1','USER2'))LOOPDBMS_STATS.EXPORT_TABLE_STATS(RS.OWNER,RS.TABLE_NAME,NULL,'OADB_ALLTB','table stats',true);END LOOP;
END;
--查看SYSDBA用户下的统计信息数量
SELECT COUNT (*) FROM STAT$_OADB_ALLTB;
备份统计信息使用ALLSTATS用户登陆188数据库,执行下面备份语句
BEGIN FOR RS IN (SELECT OWNER,TABLE_NAME FROM DBA_TABLES WHERE OWNER='ALLSTATS')
LOOP
DBMS_STATS.EXPORT_TABLE_STATS(RS.OWNER,RS.TABLE_NAME,STATTAB=>'TB_STATS',STATID => 'T1_202108161020');
END LOOP;
END;
--查看用户下的统计信息数量
SELECT COUNT (*) FROM STAT$_TB_STATS;

4、dexp导出统计信息表

./dexp  SYSDBA/SYSDBA@192.168.10.100:5236 DIRECTORY=/dm/dumpfile/ FILE=ALL_STATS_20230301.DMP LOG=DEXP_ALL_STATS_20230301.LOG TABLES=SYSDBA.'STAT$_OADB_ALLTB'

DMB库:

1、创建系统包

默认情况下,DM 在新建库第一次启动数据库服务时会自动创建除了 DMGEO、DBMS_JOB、DBMS_WORKLOAD_REPOSITORY 和 DBMS_SCHEDULER 之外的所有系统包。如果数据库没有做过换bin升级,此步可跳过,如不跳过,则执行创建系统包的系统存储过程时会重建指定的系统包。

--检查系统包是否创建,返回1表示已创建,返回0为表示未创建
SELECT SP_CREATE_SYSTEM_PACKAGES(1);
--创建(或重建)指定的系统包
SP_CREATE_SYSTEM_PACKAGES(1,'DBMS_STATS');

2、测试系统包的使用

--测试创建一个增加了前缀的临时统计信息表
DBMS_STATS.CREATE_STAT_TABLE('SYSDBA', 'OADB_ALLTB');
#其中SYSDBA为统计信息表的模式名,区分大小写;OADB_ALLTB为统计信息表名,区分大小写,系统实际创建的表会增加前缀。
--删除统计信息表
DBMS_STATS.DROP_STAT_TABLE ('SYSDBA', 'OADB_ALLTB');
#其中SYSDBA为统计信息表的模式名,区分大小写;OADB_ALLTB为创建时指定的统计信息表名,区分大小写。

3、dimp导入统计信息表

./dimp SYSDBA/SYSDBA@192.168.10.200:5236 DIRECTORY=/dm/dumpfile/ FILE=ALL_STATS_20230301.DMP LOG=DIMP_ALL_STATS_20230301.LOG TABLES=SYSDBA.'STAT$_OADB_ALLTB' TABLE_EXISTS_ACTION=REPLACE

4、把统计信息表中的统计信息导入到目标表中

--还原统计信息,使用SYSDBA用户登陆数据库,执行下面备份语句
语法:DBMS_STATS.IMPORT_TABLE_STATS(OWNNAME, TABNAME, PARTNAME, STATTAB, STATID, CASCADE, STATOWN, NO_INVALIDATE, FORCE, STAT_CATEGORY);
参数详解OWNNAME 目标表的模式名,区分大小写。TABNAME 目标表名,区分大小写。PARTNAME 目标表分区名,如果不指定分区,则一起导出所有子表的统计信息,缺省为NULL。STATTAB 统计信息表名,区分大小写。STATID 由用户指定的统计信息标识名,缺省为空字符串。CASCADE 是否连列和索引的统计信息一起导出,缺省为 TRUESTATOWN 统计信息表的模式名,区分大小写,缺省为 NULL。NO_INVALIDATE 是否让依赖游标失效,缺省为 TRUE。FORCE 仅保留参数以兼容 ORACLE,功能暂未实现。STAT_CATEGORY 仅保留参数以兼容 ORACLE,功能暂未实现。
---单表
DBMS_STATS.IMPORT_TABLE_STATS('OA', 'OA_TABLE1', NULL, 'OADB_ALLTB', 'import stats test', TRUE, 'SYSDBA');
---多表
DECLARE
BEGINFOR RS IN (SELECT OWNER,TABLE_NAME FROM DBA_TABLES WHERE OWNER IN ('SYSDBA','USER2'))LOOPBEGINDBMS_STATS.IMPORT_TABLE_STATS(RS.OWNER,RS.TABLE_NAME,NULL,'OADB_ALLTB','TABLE STATS',TRUE);EXCEPTIONWHEN OTHERS THENPRINT ('OWNER:' || RS.OWNER);PRINT ('TABLE_NAME:' || RS.TABLE_NAME);PRINT ('CODE: ' || SQLCODE);PRINT ('ERRM: ' || SQLERRM);END;END LOOP;
END;

相关文章:

达梦数据库统计信息的导出导入

一、统计信息对象统计信息描述了对象数据的分布特征。统计信息是优化器的代价计算的依据,可以帮助优化器较精确地估算成本,对执行计划的选择起着至关重要的作用。统计信息的收集频率是一把双刃剑,频率太低导致统计信息滞后,频率太…...

信息系统基本知识(六)

大纲 信息系统与信息化信息系统开发方法常规信息系统集成技术软件工程新一代信息技术信息系统安全技术信息化发展与应用信息系统服务管理信息系统服务规划企业首席信息管及其责任 1.7 信息化发展与应用 我国在“十三五”规划纲要中,将培育人工智能、移动智能终端…...

<C++>智能指针

1. 智能指针 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<memory> using namespace std;int div() {int a, b;cin >> a >> b;if (b 0)throw invalid_argument("除0错误");return a / b; }void func() {int* p1 new in…...

1.分析vmlinux可执行文件是如何生成的? 2.整理内核编译流程:uImage/zImage/Image/vmlinx之间关系

一、分析vmlinux可执行文件是如何生成的&#xff1f; 1、分析内核的底层 makefile 如下&#xff1a; vmlinux: scripts/link-vmlinux.sh vmlinux_prereq $(vmlinux-deps) FORCE$(call if_changed,link-vmlinux)vmlinux_prereq: $(vmlinux-deps) FORCE发现vmlinux的生成主要依…...

数据结构4——线性表3:线性表的链式结构

基本概念 ​ 链式存储结构用一组物理位置任意的存储单元来存放线性表的数据元素。 ​ 这组存储单元既可以是连续的又可以是不连续的甚至是零散分布在任意位置上的。所以链表中元素的逻辑次序和物理次序不一定相同。而正是因为这一点&#xff0c;所以我们要利用别的方法将这些…...

weblogic 忘记密码重置密码

解决&#xff1a;weblogic 忘记密码 weblogic安装后&#xff0c;很久不用&#xff0c;忘记访问控制台的用户名或者密码&#xff0c;可通过以下步骤来重置用户名密码。 版本&#xff1a;WebLogic Server 11g 说明&#xff1a;%DOMAIN_HOME%&#xff1a;指WebLogic Server 域(…...

安卓开发之动态设置网络访问地址

之前开发程序联测测接口的时候&#xff0c;因为要和不同的后台人员调接口&#xff0c;所以经常要先把程序里的ip地址改成后台人员给我的。每次都要先修改ip地址&#xff0c;之后编译运行一下&#xff0c;才能测试。但要是换了个后台人员&#xff0c;或者同时和2个后台人员测接口…...

深度学习模型训练工作汇报(3.8)

进行数据的初始整理的准备 主要是进行伪序列字典的设置&#xff0c;以及训练数据集的准备。 期间需要的一些问题包括在读取文件信息的时候&#xff0c;需要跳过文件的第一行或者前两行&#xff0c;如果使用循环判断的话&#xff0c;会多进行n次的运算&#xff0c;这是不划算的…...

【ns-3】添加nr(5G-LENA)模块

文章目录前言1. 下载5G-LENA源代码2. 配置并重新构建ns-3项目参考文献前言 本篇以ns-3.37为例介绍如何在ns-3中添加nr&#xff08;5G-LENA&#xff09;模块 [1]。5G-LENA是一个由Mobile Networks group CTTC&#xff08;Centre Tecnolgic de Telecomunicacions de Catalunya&a…...

(枚举)(模拟)(前缀和)(数组模拟哈希)(可二分)1236. 递增三元组

目录 题目链接 一些话 流程 套路 ac代码 题目链接 1236. 递增三元组 - AcWing题库 一些话 int f[N]; memset(f,0,sizeof f)影响不到f[N] 所以尽量不要对f[N]赋值&#xff0c;不要用f[N]操作 流程 //由三重暴力i,j,k因为三重暴力底下是分别用i和j&#xff0c;j和k作比较…...

mysql五种索引类型(实操版本)

为什么使用索引 最近学习了Mysql的索引&#xff0c;索引对于Mysql的高效运行是非常重要的&#xff0c;正确的使用索引可以大大的提高MySql的检索速度。通过索引可以大大的提升查询的速度。不过也会带来一些问题。比如会降低更新表的速度&#xff08;因为不但要把保存数据还要保…...

微服务进阶之 SpringCloud Alibaba

文章目录微服务进阶&#x1f353;SpringCloud 有何劣势&#xff1f;&#x1f353;SpringCloud Alibaba 提供了什么&#xff1f;提示&#xff1a;以下是本篇文章正文内容&#xff0c;SpringCloud 系列学习将会持续更新 微服务进阶 &#x1f353;SpringCloud 有何劣势&#xff1…...

前端性能优化笔记2 第二章 度量

相关 Performance API 都在 window.performance 对象下 performance.now() 方法 精度精确到微妙获取的是把页面打开时间点作为基点的相对时间&#xff0c;不依赖操作系统的时间。 部分浏览器不支持 performance.now() 方法&#xff0c;可以用 Date.now() 模拟 performance.n…...

关于new和delete的一些思考,为什么不能在析构函数中调用delete释放对象的内存空间,new和delete的原理

最近在写代码的时候&#xff0c;觉得每次new出来的对象都需要去delete好麻烦&#xff0c;于是直接把delete写到了析构函数中&#xff0c;在析构函数里面写了句delete this&#xff0c;结果调用析构函数的时候死循环了&#xff0c;不是很理解原因&#xff0c;于是去研究了一下。…...

一场以数字技术深度影响和改造传统实业的新风口,正在开启

当数字经济的浪潮开始上演&#xff0c;一场以数字技术深度影响和改造传统实业的新风口&#xff0c;正在开启。对于诸多在互联网时代看似业已走入死胡同的物种来讲&#xff0c;可以说是打开了新的天窗。对于金融科技来讲&#xff0c;同样如此。以往&#xff0c;谈及金融科技&…...

【LeetCode】13. 罗马数字转整数

题目链接&#xff1a;https://leetcode.cn/problems/roman-to-integer/ &#x1f4d5;题目要求&#xff1a; 罗马数字包含以下七种字符: I&#xff0c; V&#xff0c; X&#xff0c; L&#xff0c;C&#xff0c;D 和 M。 例如&#xff0c; 罗马数字 2 写做 II &#xff0c;即…...

2023/3/8集合之TreeSet HashSet简介 不含代码

TreeSet : 底层是由TreeMap维护的 无序的,不可重的 底层结构 : 红黑树(平衡二叉树) 特点 : 查询效率高,默认升序排序引用场景 : 适合应用在存储多个单个值的数据的集合,去重的,自动升序排序的场景新增方法:新增了一些与比较大小相关的方法 遍历方式 1)foreach 2)iterator 1测试…...

【面试1v1实景模拟】面试中常见的Java关键字详解

笑小枫专属目录老面&#x1f474;&#xff1a;Java中有哪些关键字老面&#x1f474;&#xff1a;简单介绍一下 final 关键字老面&#x1f474;&#xff1a;简单介绍一下 this、super 关键字老面&#x1f474;&#xff1a;简单介绍一下 static 关键字老面&#x1f474;&#xff…...

MySQL8.0.16存储过程比5.7.22性能大幅下降

MySQL8.0.16存储过程比5.7.22性能大幅下降 1、背景 从5.7.22迁移数据库到8.0.16&#xff0c;发现存储过程执行性能大幅下降。原来在5版本上执行只需要3-5秒&#xff0c;到8版本上居然要达到上万秒。 5版本&#xff1a; call Calculation_Week() OK 时间: 3.122s 8版本&#x…...

基于MATLAB的无线信道的传播与衰落(附完整代码与分析)

目录 一. 一般路径损耗模型 1. 1自由环境下路径损耗 1. 2 考虑实际情况 1.3 考虑阴影衰落 二. 代码仿真与理解 &#xff08;1&#xff09;函数文件 &#xff08;2&#xff09;函数文件 &#xff08;3&#xff09;主运行文件 三. 运行结果及理解 3.1 3.2 3.3 一. …...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...

Spring Security 认证流程——补充

一、认证流程概述 Spring Security 的认证流程基于 过滤器链&#xff08;Filter Chain&#xff09;&#xff0c;核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤&#xff1a; 用户提交登录请求拦…...

c# 局部函数 定义、功能与示例

C# 局部函数&#xff1a;定义、功能与示例 1. 定义与功能 局部函数&#xff08;Local Function&#xff09;是嵌套在另一个方法内部的私有方法&#xff0c;仅在包含它的方法内可见。 • 作用&#xff1a;封装仅用于当前方法的逻辑&#xff0c;避免污染类作用域&#xff0c;提升…...

Python实现简单音频数据压缩与解压算法

Python实现简单音频数据压缩与解压算法 引言 在音频数据处理中&#xff0c;压缩算法是降低存储成本和传输效率的关键技术。Python作为一门灵活且功能强大的编程语言&#xff0c;提供了丰富的库和工具来实现音频数据的压缩与解压。本文将通过一个简单的音频数据压缩与解压算法…...