达梦8 新老排序机制比较

 达梦的排序机制由四个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大小的本地排序区。如果排序的尺寸大于SORT_BUF_SIZE,则使用临时表空间协助完成排序。

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

新排序机制时,系统为每一个进行排序操作的会话在全局排序区分配至少1个内存分片(SORT_BLK_SIZE)。根据排序的尺寸需要,最多可扩展至SORT_BUF_GLOBAL_SIZE。当内存无法扩展时,则使用临时表空间协助完成排序。排序操作至少需要抢占一个内存分片,当全局排序区耗尽时,后续会话的排序操作将报-544错误。

达梦8 探寻达梦排序原理:新排序机制(SORT_FLAG=1)

相比较而言,传统排序机制缺乏灵活性。当系统中会话很多的时候,总体上可能消耗过多内存。而大的会话却由于本地buffer不够而使用临时表空间完成排序,SQL响应时间达不到预期。

新排序机制解决了上述问题。小会话可以使用一个分片(默认1M),大会话可以自由扩展至总内存不超过SORT_BUF_GLOBAL_SIZE。但新排序机制也有明显的缺点:当代码编写不好的时候,某异常SQL可能耗光整个全局排序区,造成后续需要排序的会话都无法进行。

当异常出现时,传统排序机制的用户体验是某功能很慢,新排序机制是有程序报错退出!

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值