达梦8 探寻达梦排序机制之一:传统排序机制(SORT_FLAG=0)

测试版本:--03134283938-20221019-172201-20018

达梦的排序机制由四个dm.ini参数控制:

                SORT_BUF_SIZE                   = 100                     #maximum sort buffer size in MegabytesSORT_BLK_SIZE                   = 1                    #maximum sort blk size in MegabytesSORT_BUF_GLOBAL_SIZE            = 1000                  #maximum global sort buffer size in MegabytesSORT_FLAG                       = 0                     #choose method of sort

SORT_FLAG,0代表传统排序机制,1代表新排序机制。

传统排序机制时,系统均为每一个进行排序操作的会话分配SORT_BUF_SIZE大小的本地排序区(RT_MEMOBJ_VPOOL)。如果排序的尺寸大于SORT_BUF_SIZE,则使用临时表空间协助完成排序,这时可以通过v$mtab_used_history查询。

  • 下面我们做一个实验

会话1:

提前准备包含30000000行数据的d表,读取d表数据排序后插入e表。

insert into e select * from d order by 2;

会话2:

查询内存池的使用情况

#查询内存池的使用情况
SQL> select a.name pool,total_size/1024/1024.0 Mbytes,FILE_NAME 
from v$mem_pool a
where a.name in ('VDTA POOL','RT_MEMOBJ_VPOOL') 
order by 2 desc limit 2#会话1执行中的查询结果:
LINEID     POOL            MBYTES FILE_NAME
---------- --------------- ------ ------------------------------------------------
1          RT_MEMOBJ_VPOOL 115    /home/dmops/build/svns/1666183702277/op/xsort3.c
2          RT_MEMOBJ_VPOOL 10     /home/dmops/build/svns/1666183702277/op/xsort3.c#查询临时表空间的使用情况
SQL> select  MTAB_TYPE,MTAB_USED_BY_M,SQL_TEXT from v$mtab_used_history;LINEID     MTAB_TYPE MTAB_USED_BY_M SQL_TEXT
---------- --------- -------------- -----------------------------------------
1          FLUSH     24             insert into e select * from d order by 2;
2          NSORT     289            insert into e select * from d order by 2;

下面是dmserver在OS中的内存占用

  • 调整参数不变,5个会话同时执行

查询会话:

#查询内存池的使用情况
SQL> select a.name pool,total_size/1024/1024.0 Mbytes,FILE_NAME 
from v$mem_pool a
where a.name in ('VDTA POOL','RT_MEMOBJ_VPOOL') 
order by 2 desc limit 5LINEID     POOL            MBYTES FILE_NAME
---------- --------------- ------ ------------------------------------------------
1          RT_MEMOBJ_VPOOL 115    /home/dmops/build/svns/1666183702277/op/xsort3.c
2          RT_MEMOBJ_VPOOL 115    /home/dmops/build/svns/1666183702277/op/xsort3.c
3          RT_MEMOBJ_VPOOL 115    /home/dmops/build/svns/1666183702277/op/xsort3.c
4          RT_MEMOBJ_VPOOL 115    /home/dmops/build/svns/1666183702277/op/xsort3.c
5          RT_MEMOBJ_VPOOL 115    /home/dmops/build/svns/1666183702277/op/xsort3.c#查询临时表空间的使用情况
SQL> select  MTAB_TYPE,MTAB_USED_BY_M,SQL_TEXT from v$mtab_used_history;LINEID     MTAB_TYPE MTAB_USED_BY_M SQL_TEXT
---------- --------- -------------- -----------------------------------------
1          FLUSH     24             insert into e select * from d order by 2;
2          FLUSH     24             insert into e select * from d order by 2;
3          FLUSH     24             insert into e select * from d order by 2;
4          FLUSH     24             insert into e select * from d order by 2;
5          FLUSH     24             insert into e select * from d order by 2;
6          NSORT     289            insert into e select * from d order by 2;
7          NSORT     289            insert into e select * from d order by 2;
8          NSORT     289            insert into e select * from d order by 2;
9          NSORT     289            insert into e select * from d order by 2;
10         NSORT     289            insert into e select * from d order by 2;

下面是dmserver在OS中的内存占用

  • 调整参数SORT_BUF_SIZE=512

5个会话同时执行

查询会话:

#查询内存池的使用情况
SQL> select a.name pool,total_size/1024/1024.0 Mbytes,FILE_NAME 
from v$mem_pool a
where a.name in ('VDTA POOL','RT_MEMOBJ_VPOOL') 
order by 2 desc limit 5#会话1执行中的查询结果:
select  MTAB_TYPE,MTAB_USED_BY_M,SQL_TEXT from v$mtab_used_history;
LINEID     POOL            MBYTES        FILE_NAME
---------- --------------- ------------- ------------------------------------------------
1          RT_MEMOBJ_VPOOL 714.509765625 /home/dmops/build/svns/1666183702277/op/xsort3.c
2          RT_MEMOBJ_VPOOL 712.509765625 /home/dmops/build/svns/1666183702277/op/xsort3.c
3          RT_MEMOBJ_VPOOL 712.509765625 /home/dmops/build/svns/1666183702277/op/xsort3.c
4          RT_MEMOBJ_VPOOL 712.509765625 /home/dmops/build/svns/1666183702277/op/xsort3.c
5          RT_MEMOBJ_VPOOL 712.509765625 /home/dmops/build/svns/1666183702277/op/xsort3.c#查询临时表空间的使用情况
SQL> select  MTAB_TYPE,MTAB_USED_BY_M,SQL_TEXT from v$mtab_used_history;
no rows

由上可见,当排序区足够时将不启用临时表空间排序。

下面是dmserver在OS中的内存占用

  • 调整参数SORT_BUF_SIZE=1024

5个会话同时执行

查询会话:

#查询内存池的使用情况
SQL> select a.name pool,total_size/1024/1024.0 Mbytes,FILE_NAME 
from v$mem_pool a
where a.name in ('VDTA POOL','RT_MEMOBJ_VPOOL') 
order by 2 desc limit 5#会话1执行中的查询结果:
LINEID     POOL            MBYTES         FILE_NAME
---------- --------------- -------------- ------------------------------------------------
1          RT_MEMOBJ_VPOOL 1121.841796875 /home/dmops/build/svns/1666183702277/op/xsort3.c
2          RT_MEMOBJ_VPOOL 1117.841796875 /home/dmops/build/svns/1666183702277/op/xsort3.c
3          RT_MEMOBJ_VPOOL 1117.841796875 /home/dmops/build/svns/1666183702277/op/xsort3.c
4          RT_MEMOBJ_VPOOL 1117.841796875 /home/dmops/build/svns/1666183702277/op/xsort3.c
5          RT_MEMOBJ_VPOOL 1117.841796875 /home/dmops/build/svns/1666183702277/op/xsort3.c#查询临时表空间的使用情况
SQL> select  MTAB_TYPE,MTAB_USED_BY_M,SQL_TEXT from v$mtab_used_history;
no rows

下面是dmserver在OS中的内存占用

从本次测试中可见,当增加参数值后,每个会话占用的内存增加,dmserver占用的总内存也相应增加。

  • 调整参数SORT_BUF_SIZE=2048

5个会话同时执行

查询会话:

#查询内存池的使用情况
SQL> select a.name pool,total_size/1024/1024.0 Mbytes,FILE_NAME 
from v$mem_pool a
where a.name in ('VDTA POOL','RT_MEMOBJ_VPOOL') 
order by 2 desc limit 5#会话1执行中的查询结果:
LINEID     POOL            MBYTES         FILE_NAME
---------- --------------- -------------- ------------------------------------------------
1          RT_MEMOBJ_VPOOL 1117.841796875 /home/dmops/build/svns/1666183702277/op/xsort3.c
2          RT_MEMOBJ_VPOOL 1117.841796875 /home/dmops/build/svns/1666183702277/op/xsort3.c
3          RT_MEMOBJ_VPOOL 1117.841796875 /home/dmops/build/svns/1666183702277/op/xsort3.c
4          RT_MEMOBJ_VPOOL 1117.841796875 /home/dmops/build/svns/1666183702277/op/xsort3.c
5          RT_MEMOBJ_VPOOL 1117.841796875 /home/dmops/build/svns/1666183702277/op/xsort3.c#查询临时表空间的使用情况
SQL> select  MTAB_TYPE,MTAB_USED_BY_M,SQL_TEXT from v$mtab_used_history;
no rows

下面是dmserver在OS中的内存占用

从本次测试中可见,参数再增加,占用的内存不再同步增长。

结论

SORT_BUF_SIZE参数是系统为每一个会话分配的排序内存上限。参数设置过大时可能会造成一些内存浪费,但并不总跟随参数上涨,系统试图优化内存的使用。当会话实际需要超过SORT_BUF_SIZE时,系统使用临时表空间协助完成排序工作,可以通过v$mtab_used_history视图查询。

每一个会话的排序区相互独立。其中一个会话超出限额不会影响后续会话的执行。

新排序机制则有所不同,全局排序区耗光后,后续排序会话将报-544错误。以后的文章将详细介绍。

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

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

相关文章

自动化立体库集成技术--含(思维导图)

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》 随着科技的不断进步和物流行业的快速发展,自动化立体库集成技术已成为现代物流仓储的重要支撑。 它利用先进的自动化设备和智能化管理…

[leetcode hot 150]第一百三十七题,只出现一次的数字Ⅱ

题目: 给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。 由于需要常数级空间和线性时间复杂度…

http协议,tomcat的作用

HTTP 概念:Hyper Text Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。 特点: 1.基于TCP协议:面向连接,安全 2. 基于请求-响应模型的:一次请求对应一次响应 3HTTP协议是无状态的协议:对于事务处理没有记忆能…

tsconfig.json和tsconfig.app.json文件解析(vue3+ts+vite)

tsconfig.json {"files": [],"references": [{"path": "./tsconfig.node.json"},{"path": "./tsconfig.app.json"}] }https://www.typescriptlang.org/tsconfig/#files files: 在这个例子中,files 数…

git-生成SSH密钥

git-生成SSH密钥 1 打开命令窗口2 操作 1 打开命令窗口 选择"Git Bash Here",打开Git命令窗口 2 操作 查看当前用户名称 git config user.name配置你的邮箱,“6xxxqq.com” 填写自己的邮箱 git config --global user.email "6xxxqq…

认识Java中的String类

前言 大家好呀,本期将要带大家认识一下Java中的String类,本期注意带大家认识一些String类常用方法,和区分StringBuffer和StringBuilder感谢大家收看 一,String对象构造方法与原理 String类为我们提供了非常多的重载的构造方法让…

计算机网络基础-VRRP原理与配置

目录 一、了解VRRP 1、VRRP的基本概述 2、VRRP的作用 二、VRRP的基本原理 1、VRRP的基本结构图 2、设备类型(Master,Backup) 3、VRRP抢占功能 3.1:抢占模式 3.2、非抢占模式 4、VRRP设备的优先级 5、VRRP工作原理 三…

React基础教程:react脚手架

1、create-react-app 全局安装create-react-app npm install -g create-react-app安装成功之后,通过命令create-react-app -V检查是否安装成功 创建一个项目 create-react-app my-app如果不想全局安装,可以直接使用npx,也可以实现相同的效…

小主机折腾记25

10.买了惠普光驱,想给880g5twr安装上,结果发现卡扣不对 880g5twr的卡扣更长一些,比光驱本身长一些,各位如果想买的注意擦亮眼睛,看看卡扣跟你的主机一致与否 后续在闲鱼上买了个卡扣,加邮费12块钱…… 1…

转让闲置商标别中了残标,与驰名商标近似被驳回!

前几天有个人说要购买一个闲置的已注册商标,普推商标知产老杨帮忙去联系了一下,发现这个商标是残标用不成,他是要买回来的做化妆品的,但是在3类化妆品里面化妆品的小类并没有通过初审下证。 大家转让闲置商标就要注意了&#xff0…

链表的中间结点

一、题目链接 https://leetcode.cn/problems/middle-of-the-linked-list/submissions/538121725、 二、思路 定义快慢指针,快指针一次走两步,慢指针一次走一步,最后慢指针的位置就是中间结点的位置 三、题解代码 //快慢指针,快…

带你学习Mybatis之逆向工程

逆向工程 可以针对单表自动生成MyBatis执行所需要的代码&#xff0c;包括&#xff1a;Mapper.java&#xff0c;Mapper.xml&#xff0c;实体类&#xff0c;这样可以减少重复代码的编写 <dependency> <groupId>org.mybatis.generator</groupId> …

【计算机视觉(9)】

基于Python的OpenCV基础入门——形态学操作 形态学操作腐蚀膨胀开运算闭运算梯度运算顶帽黑帽 形态学操作代码实现以及效果图 形态学操作 形态学操作是数字图像处理中的一种方法&#xff0c;用于改变和提取图像中的结构和形状信息。它基于图像的形状和大小特征&#xff0c;通过…

基于SpringBoot+Vue单位考勤系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;还…

2024上海初中生古诗文大会倒计时4个多月:单选题真题和独家解析

现在距离2024年初中生古诗文大会还有4个多月时间&#xff0c;我们继续来看10道选择题真题和详细解析&#xff0c;以下题目截取自我独家制作的在线真题集&#xff0c;都是来自于历届真题&#xff0c;去重、合并后&#xff0c;每道题都有参考答案和解析。 为帮助孩子自测和练习&…

STM32F103C8移植uCOSIII并以不同周期点亮两个LED灯(HAL库方式)【uCOS】【STM32开发板】【STM32CubeMX】

STM32F103C8移植uC/OSIII并以不同周期点亮两个LED灯&#xff08;HAL库方式&#xff09;【uC/OS】【STM32开发板】【STM32CubeMX】 实验说明 将嵌入式操作系统uC/OSIII移植到STM32F103C8上&#xff0c;构建两个任务&#xff0c;两个任务分别以1s和3s周期对LED进行点亮—熄灭的…

前端渲染大量数据思路【虚拟列表】【异步机制】

当浏览器遇到性能瓶颈导致页面卡顿时&#xff0c;你会怎么处理&#xff1f;如何查找问题的原因&#xff1f; 浏览器本身自带性能检测工具&#xff0c;通常我们分析由脚本导致的页面卡顿会选择 性能&#xff08;performance&#xff09; 选项卡&#xff0c;在其中我们可以找到导…

3D Gaussian Splatting for Real-Time Radiance Field Rendering

辐射场方法最近在基于多张照片或视频进行新视角合成方面取得了革命性进展。然而&#xff0c;实现高视觉质量仍然需要耗时且计算成本高的神经网络&#xff0c;而最近的快速方法不可避免地在速度和质量之间进行了权衡。对于无界和完整的场景&#xff08;而不是孤立的物体&#xf…

【Vue】vuex 的使用 - 创建仓库

通用的地方我们一般会称之为仓库 1.安装 vuex 安装vuex与vue-router类似&#xff0c;vuex是一个独立存在的插件&#xff0c;如果脚手架初始化没有选 vuex&#xff0c;就需要额外安装。 yarn add vuex3 或者 npm i vuex32.新建 store/index.js 专门存放 vuex ​ 为了维护项目…

【排序算法】总结篇

✨✨这些 排序算法都是指的 需要进行比较的排序算法 ✨✨下面都是略微讲解一下思路&#xff0c;如果需要详细了解哪一个排序&#xff0c;点击&#x1f449;链接即可 ✨✨对于时间、空间复杂度、稳定性&#xff0c;希望你&#x1f9d1;‍&#x1f393;能够理解记忆&#x1f9d1;…