几个关于oceanbase因系统原因 sql执行失败的案例
主要遇到的有5种情况:
1、由于合并操作导致sql执行失败的问题
这个问题在一个写入频繁系统中比较常见,之前也讲过怎么导致合并的。
在oceanbase合并期间,需要把内存中的数据落入到磁盘中,为了保证数据的一致性,会将正在执行的sql kill掉,但是sql并不是立刻kill,会保留100ms的时间给这个sql去执行,如果说执行不完成,就会被kill,哪怕是101ms。这时候就会导致sql执行失败。
2、由于sql执行时间超时,导致sql执行失败。
这个问题在所有的数据库中都会有,因为不可能放由一个sql无限时间去执行,ob数据库默认执行超时时间为10s,超过时间就会被系统kill。
3、事务执行超时,导致sql执行失败。
在应用中,一个事务可能由一个或者多个sql组成,有时候会发现,单条sql执行时间并没有超过10s,但是被系统kill了,为什么?
因为ob不单在单条sql上做了限制,而且会在整个事务的时间上做限制,默认事务超时时间为100s,如果这个事务有n个sql组成,这n-1个sql执行的时间加起来如果超过了100s,或者接近100s,那么最后一个sql可能刚开始执行就被kill,也可能执行的机会都没有,就将整个事务kill了。
4、由于memstore打满,导致sql执行失败。
这个原因也是由于合并操作导致的,在合并过程中,后续的写入操作会被记录到memstore里面,如果memstore在合并过程中写满,但是合并操作还没有完成,那么这个时候sql就会写入不进来,报错memstore已用满。
5、合并期间,location cache没有及时更新导致sql执行失败。
如果一个sql涉及多server执行,ob数据库的合并方式是轮训合并,每台server一次合并。那么再合并期间,或者合并完成后的一会,会导致sql执行失败,原因就是因为location cache没有更新到最新的,为了保证数据的一致性,ob会将这个sql杀死。
这是最近遇到的关于ob系统会将sql kill的几个常见的情况~,如果以后还遇到会及时补充。
最后更新:2017-11-12 23:33:53
上一篇:
nrpe安装
下一篇:
揭秘2017双11背后的网络-双11的网络产品和技术概览
跟我一起写 Makefile
InterruptedException 和 interrupting threads 的一些说明
关于Myeclipse8.6和 Flex4 插件安装,进度不走的问题解决办法
《软件工艺师:专业、务实、自豪》一2.3.1 转变开发方式
EOF 与 BOF 之分
技术人员谈管理之整体管理案例论文
Text_01_2011年12月24日12:57:02
java 在线编辑模版 代码编辑器 兼容手机平板PC 网站源码 freemaker 静态引擎
新零售时代来临,生鲜行业如何实现电商O2O一体化管理
VMware的“Intel VT-x is disabled”解决方法