暂无图片
lock for read代码疑问
我来答
分享
暂无图片 匿名用户
lock for read代码疑问

【 使用环境 】测试环境
【 OB 】OB3.1版本

image

image1196×861 58.3 KB


在此函数中,退出for循环的条件为ret=OB_ERR_SHARED_LOCK_CONFLICT或者for循环中的break,那么退出循环的时候ret一定不为OB_SUCCESS啊,那读数据的话不就只能等锁释放或者超时后才可以退出了吗?
但是这个函数的作用不应该是让读操作可以读取正在进行修改的行中的旧版本,当读快照大于本地提交时间戳的事务进行等待吗?
代码源文件在这
image【 使用环境 】测试环境

【 OB 】OB3.1版本


在此函数中,退出for循环的条件为ret=OB_ERR_SHARED_LOCK_CONFLICT或者for循环中的break,那么退出循环的时候ret一定不为OB_SUCCESS啊,那读数据的话不就只能等锁释放或者超时后才可以退出了吗?
但是这个函数的作用不应该是让读操作可以读取正在进行修改的行中的旧版本,当读快照大于本地提交时间戳的事务进行等待吗?
代码源文件在这
image
我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
O
OceanBase社区传送门

“退出for循环的条件为ret=OB_ERR_SHARED_LOCK_CONFLICT或者for循环中的break”不对,ret == OB_ERR_SHARED_LOCK_CONFLICT 是继续循环的条件, ret != OB_ERR_SHARED_LOCK_CONFLICT 才会退出循环。如果 try_wait_row_lock_for_read 成功了,说明可读,然后就退出循环了。

OB_FAIL这个宏会把返回值赋给ret:


暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
日志备份模式的含义是什么
回答 1
OceanBase主要分为数据备份和日志备份两种:数据备份是指存储层的基线和转储数据,也就是备份时刻的MajorSSTableMinorSSTable;日志备份是指事务层生成的Clog,包含了SSTa
集群某个节点挂了,怎么恢复或重启单个节点?
回答 2
两种方式:黑屏:命令行启动操作步骤用admin用户启动observer进程。d/home/admin/oceanbase/bin/observer[启动参数]可以运行使用./bin/observerh
oceanbase ,opengauss 哪个认证认可度高点?
回答 1
OB吧
集群扩容的时候,会影响线上性能吗?
回答 1
集群加节点的时候可以把负载均衡参数关闭enablerebalance
关于内存使用 memstore的设置
回答 1
1)这是因为从底层解决了大事务能力的支持,事务不再受冻结操作影响,所以调整了这个参数的默认值;2)memstorelimitpercentage和rowcache应该是没关系的
__all_tenant_resource_usage记录了租户的资源使用情况
回答 1
这个参数在4.0版本已经废弃了,需更新版本。
oceanbase不让免费体验?
回答 5
OAT只能用于企业版
oblogproxy/run/test/log目录下生成大量的日志文件
回答 1
给CDC传递的配置项maxlogfilecount控制单个进程日志文件的数量,默认值为40,即保存10G日志。目前每个进程负责回收自己产生的超过数量限制的日志文件,不同进程(包括进程重启后的新进程)不
社区版4.2.1版本MySQL租户模式下information_schema.tables中AUTO_INCREMENT的值为null,还有没有其它方式可以获取这个值的?
回答 1
为了获取所有表的自增主键的话可以查selectfromoceanbase.CDBOBAUTOINCREMENT视图。列名和表名需要和allcolumn表查CDBOBTABLELOCATIONS关联查询
Navicat对oceanbase的视图编辑的时候不兼容
回答 1
工具兼容性问题,navicat操作有问题