首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Oracle 11g 中的 WMSYS.WM

一般在10g的时候,开发习惯使用WM_CONCAT进行字符串的拼接,但是该函数效率存在比较大的问题,在12c中甚至移除了该函数。本次在11g环境在对该函数进行测试,并与listagg进行对比。

初始化环境

11g中测试

数据库版本为11.2.0.4.0

对比测试

两个执行计划最明显的区别是listagg不存在db block gets,同时逻辑读和物理读也比较少。

使用runstats_pkg批量测试

创建2个测试存储过程

开始测试

可以看出WM_CONCAT函数的LATCH争用比较厉害,效率较差。

因为函数的内部具体算法看不到,猜想可能是WM_CONCAT遍历算法不够优化吧。

总结

推荐在11g以上版本使用listagg取代WM_CONCAT进行字符串的拼接。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190110B05XO500?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券