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

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

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

#maximum sort buffer size in Megabytes ,有效值范围(1~2048)                
SORT_BUF_SIZE                   = 100    #maximum sort blk size in Megabytes,有效值范围(1~50)
SORT_BLK_SIZE                   = 1     #maximum global sort buffer size in Megabytes,有效值范围(10~4294967294)               
SORT_BUF_GLOBAL_SIZE            = 500   #choose method of sort
SORT_FLAG                       = 1   

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

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

  • 下面我们做一个实验

会话1:

提前准备包含20000000行数据的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 5select  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 5LINEID     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 5LINEID     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/diannao/25482.shtml

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

相关文章

SpringBoot: 启动流程和类装载

前面我们学过Spring定制了自己的可执行jar,将真正执行时需要的类和依赖放到BOOT-INF/classes、BOOT-INF/lib来,为了能够识别这些为止的源文件,Spring定制了自己类加载器,本节我们来讲解这个类加载器。本节涉及的内容主要包括: Sp…

Linux部署调度工具xxl-job

背景: Pentaho Data Integration(kettle)作为用户规模最多的开源ETL工具,强大简洁的功能深受广大ETL从业者的欢迎。但kettle本身的调度监控功能却非常弱。Pentaho官方都建议采用crontab(Unix,linux平台)和计划任务(Win…

群体优化算法----树蛙优化算法介绍以及应用于资源分配示例

介绍 树蛙优化算法(Tree Frog Optimization Algorithm, TFO)是一种基于群体智能的优化算法,模拟了树蛙在自然环境中的跳跃和觅食行为。该算法通过模拟树蛙在树枝间的跳跃来寻找最优解,属于近年来发展起来的自然启发式算法的一种 …

抽象的java入门1.3.2

前言: 全新版本的函数(方法)定义,更简单 1.优化了验证过程,直击本质 2.新增目前一图流 正片: 函数的结构可以分为三部分:函数名,参数,函数体 一生二,二生…

6.9总结

Vue生命周期 生命周期:指一个对象从创建到销毁的整个过程生命周期的八个阶段:每触发一个生命周期事件,会自动执行一个生命周期的方法(钩子) mounted:挂载完成,Vue初始化成功,HTML渲…

ssm629基于SSM的二手交易平台设计与开发+jsp【已测试】

前言:👩‍💻 计算机行业的同仁们,大家好!作为专注于Java领域多年的开发者,我非常理解实践案例的重要性。以下是一些我认为有助于提升你们技能的资源: 👩‍💻 SpringBoot…

智慧社区整体解决方案

1.智慧社区整体建设方案内容 2.整体功能介绍

linux动态调试 dev_dbg

动态调试使用方法 打开内核动态调试开关,make menuconfig选中CONFIG_DYNAMIC_DEBUG以及CONFIG_DEBUG_FS Linux启动后,使用命令行挂载上dbgfs 1. mkdir /mnt/dbg 2. mount -t debugfs none /mnt/dbg 1.控制某个文件所有dev_dbg(), echo -n &q…

sqli-labs 靶场 less-11~14 第十一关、第十二关、第十三关、第十四关详解:联合注入、错误注入

SQLi-Labs是一个用于学习和练习SQL注入漏洞的开源应用程序。通过它,我们可以学习如何识别和利用不同类型的SQL注入漏洞,并了解如何修复和防范这些漏洞。Less 11 SQLI DUMB SERIES-11判断注入点 尝试在用户名这个字段实施注入,且试出SQL语句闭合方式为单…

电子阅览室有何作用

随着互联网的快速发展,电子阅览室逐渐成为人们获取知识的新方式。它为读者提供了便捷、高效的阅读体验,具有诸多作用。首先,电子阅览室拥有丰富的电子书籍资源,涵盖了各个领域的知识。无论是文学作品还是学术论文,读者…

解决Win10系统ping不通、无法远程的问题

1、概述 某天要使用微软的远程桌面程序mstsc.exe远程到旁边的一台测试电脑上,结果远程不了,ping都ping不通,于是详细研究了这个问题。在此大概地记录一下该问题排查的过程,以供参考。 2、ping不通 使用mstsc.exe远程到测试电脑,远程不了,没有反应。于是手动ping一…

英语学习笔记33——A fine day

A fine day 风和日丽 词汇 Vocabulary day n. 日子,白天 复数:days 常见节日:Mothers’ Day 母亲节      Fathers’ Day 父亲节      Teachers’ Day 教师节      Children’s Day 儿童节      Women’s Day 妇女节 c…

html--宇航员404

<!doctype html> <html> <head> <meta charset"utf-8"> <title>太空404</title><style> html {margin: 0;padding: 0;background-color: white; }body, html {width: 100%;height: 100%;overflow: hidden; }#svgContainer…

【数据库】SQL--DDL(初阶)

文章目录 DDL1. 数据库操作1.1. 表操作1.1.1 创建1.1.2. 查询 2. 数据类型及案例2.1 数值类型2.2 字符串类型2.3 日期时间类型2.4 案例练习 3. 表操作--修改3.1 添加字段3.2 修改字段3.3 修改表名 4. 表操作-删除4.1 删除字段4.2 删除表 5. DDL小结 更多数据库MySQL系统内容就在…

Pytorch 实现目标检测二(Pytorch 24)

一 实例操作目标检测 下面通过一个具体的例子来说明锚框标签。我们已经为加载图像中的狗和猫定义了真实边界框&#xff0c;其中第一个 元素是类别&#xff08;0代表狗&#xff0c;1代表猫&#xff09;&#xff0c;其余四个元素是左上角和右下角的(x, y)轴坐标&#xff08;范围…

【网络安全】【深度学习】【入侵检测】SDN模拟网络入侵攻击并检测,实时检测,深度学习

文章目录 1. 前言2. Mininet 和 Ryu 的区别2.1 Mininet2.2 Ryu2.3 总结 3. 模拟攻击3.1 环境准备3.2 创建 Mininet 网络拓扑3.2 启动 Ryu 控制器3.3 模拟网络攻击3.4 捕获流量 4. 实时异常检测4.1 在 Ryu 控制器中4.2 在 h2 机器上的实验结果4.3 深度学习模型部署上h2机器 帮助…

电感十大供应商

电感品牌-电感器品牌排行榜-电感十大品牌-Maigoo品牌榜

Fences 5 激活码 - 电脑桌面整理软件

提起桌面整理&#xff0c;经典老牌工具 Fences 必有一席之地&#xff0c;Stardock 发布了最新的 Fences 5 版本。 可以将文件和图标归类放入各个栅栏分区&#xff0c;并支持文件夹展开至桌面、分区置顶、淡化隐藏图标等功能&#xff0c;能让你的桌面焕然一新&#xff0c;不再混…

(2024,扩散,DMP,提示混合,动态门控,阶段特异性,微调)通过混合提示进行扩散模型修补

Diffusion Model Patching via Mixture-of-Prompts 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0 摘要 1 简介 2 相关工作 3 扩散模型修补&#xff08;DMP&#xff09; 3.1 架构…

用大模型理解爆火的KAN网络

上个月五一假期的时候&#xff0c;KAN突然成为了热门话题。虽然最初我并没有计划弄懂它&#xff0c;但在老板的要求下&#xff0c;我还是探索了一下。 一、KAN是什么&#xff1f; Kolmogorov-Arnold 定理是数学领域的一个里程碑&#xff0c;它揭示了多元函数能够通过一组更简…