几个关于oceanbase因系统原因 sql执行失败的案例

简介: 最近总结了一下关于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的几个常见的情况~,如果以后还遇到会及时补充。

目录
相关文章
|
8月前
|
SQL 容灾 安全
云时代SQL Server的终极答案:阿里云 RDS SQL Server如何用异地容灾重构系统可靠性
在数字化转型的浪潮中,数据库的高可用性已成为系统稳定性的生命线。作为经历过多次生产事故的资深开发者,肯定深知传统自建SQL Server架构的脆弱性——直到遇见阿里云 RDS SQL Server,其革命性的异地容灾架构彻底改写了游戏规则。
|
7月前
|
算法 数据挖掘 数据库
通过 SQL 快速使用 OceanBase 向量检索学习笔记
通过 SQL 快速使用 OceanBase 向量检索学习笔记
|
SQL 存储 测试技术
SQL在构建系统中的应用:关键步骤与技巧
在构建基于数据库的应用系统时,SQL(Structured Query Language)作为与数据库交互的核心语言,扮演着至关重要的角色
|
SQL 存储 数据库
SQL在构建系统中的应用:关键要素与编写技巧
在构建基于数据库的系统时,SQL(Structured Query Language)扮演着至关重要的角色
|
SQL 数据库连接 数据库
管理系统中的Visual Studio与SQL集成技巧与方法
在现代软件开发和管理系统中,Visual Studio(VS)作为强大的集成开发环境(IDE),与SQL数据库的紧密集成是构建高效、可靠应用程序的关键
|
SQL 监控 数据库
管理系统VS SQL:高效集成的关键技巧与方法
在现代企业信息化建设中,管理系统(如ERP、CRM等)与SQL数据库之间的紧密集成是确保数据流动顺畅、业务逻辑高效执行的关键
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
719 13
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
513 9

推荐镜像

更多