网站大量收购独家精品文档,联系QQ:2885784924

达梦在大批量绑定变量时遇到的异常处理模拟和分享_达梦变量空间溢出.docx

达梦在大批量绑定变量时遇到的异常处理模拟和分享_达梦变量空间溢出.docx

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

达梦在大批量绑定变量时遇到的异常处理模拟和分享

问题背景

在日常使用中,经常会遇到需要进行大\h批量插入、修改或查询的操作场景,大部分人都会按照之前在其他数据库时的使用习惯在达梦进行大批量绑定参数的数据插入、修改或查询,此时或许就会遇到报错变量空间溢出或Toobigvariablesspace等报错,经过排查处理后会引发一个新的疑问,达梦的绑定参数个数最大是65535,为什么没有达到这个数也会报错呢?

相关参数

此时就要引入一个参数,VM_STACK_SIZE,虚拟机堆栈大小,在\h达梦数据库中,每个会话线程都会申请一定大小的堆栈空间用于参与会话sql执行的一系列操作,当一次性发起大批量的带绑定变量的操作时,如果虚拟机堆栈过小则会抛出异常,以下通过模式测试确认该参数的影响。

模拟测试

场景一

通过jmeter测试大批量带绑定变量插入验证VM_STACK_SIZE参数对该系列场景的影响,首先使用默认大小进行测试,一次性插入1000条,每条插入绑定变量43个,变量总数为43000。

VM_STACK_SIZE默认大小为256KB

jmeter执行一次,一次性插入1000条,每条插入绑定变量43个,变量总数为43000,报错Toobigvariablesspace,如下图

SQLQue1y

Que1yType:Prepa「edSelectStatement

9心_'

983

934

985

936

93:

933

939

99l.l

991

99

993

994

995

996

99;

993

999

1,:::,

Pa「amete「values沁]i.,(1001沁l试1001沁l试1001沁l试1001沁l试1001沁l试1001沁l试1001沁l试1001沁l试1001沁l试1001沁l试1001沁l试1001沁l试1001沁l试1001沁l试1001沁l试1001沁l试10

Pa「amete「types:VARCHAR,VARCHAR,VARCHAR,VARCHAR,VARCHAR,VARCHAR,VARCHAR,VARCHAR,VARCHAR,VARCHAR,VARCHAR,VARCHAR,VARCHAR,VARCHAR,VARCHAR,VA

Variablenames:dm CSO,@mwefwf

同时同步查看V$VMS视图观察堆栈使用情况,发现VUSED使用量极少,此处推测会话线程在解析sql后根据sql的情况申请堆栈大小,但是绑定参数数量过多堆栈空间配置过少导致申请失败从而返回异常。或者这一过程极快,查询动态视图时没办法捕捉到

同时从sqllog中查看该sql执行情况,会话线程解析完sql后,开始进行事务处理,随后就发生了回滚,中间的1秒时间可能为上诉进行申请虚拟机堆栈空间等一系列操作

场景二

在测试了该参数在默认值情况下大批量场景插入失败后,尝试调大参数再试,将默认的256KB调整为2048KB

jmeter执行一次,一次性插入1000条,每条插入绑定变量43个,变量总数为43000,执行成功,如下图

同时同步查看V$VMS视图观察堆栈使用情况,这一过程在一瞬间,此时查询动态视图也没办法捕捉到使用信息,查看sqllog,调大后批量插入执行成功,执行时间为49毫秒。

堆栈大小使用验证

jmeter尝试调大并发,捕捉到了部分线程的堆栈空间使用情况,根据视图信息猜测,一次性插入1000条,每条插入绑定变量43个,变量总数为43000

时,单个会话线程大概需要用到430004/1024=419.92KB的堆栈空间,在默认256时报错。

同时测试了调整VM_STACK_SIZE410时,执行失败。

调整为430,执行成功,说明通过视图判断的大小基本准确

MIN_VALUE IMAX_VALUE IDEFAULT_VALUEIMPP_CHKISESS_VALUE IFILE_VALUE IDESCRIPTIONIPARA_TYPE

VARCHAR(256)IVARCHAR(256)IVARCHAR(256)ICHAR(1)IVARCHAR(256)IVARCHAR(256)IVARCHAR(256)IVARCHAR(200)

64 262144 256

430 430 vmstacksize INFlLE

NCSDNwefkwf

N

ITexi

I.?

Samplerresult Request Responsedata

丐0JDBCReques\2 TlireadName线程计11-1

SampleStait:2024-01-2318:57:55CST

Loacltime:672Co

您可能关注的文档

文档评论(0)

暗伤 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档