lealone / Lealone

比 MySQL 和 MongoDB 快10倍的 OLTP 关系数据库和文档数据库
Other
2.44k stars 514 forks source link

压力测试下获取空的seq了 #199

Closed cbqqkcel closed 1 year ago

cbqqkcel commented 1 year ago

在压力测试下获取到空的seq了,出现的非常频繁。

2023-08-17 17:58:57 database: 
/*SQL */COMMIT;
2023-08-17 17:58:57 database: 
/*SQL */COMMIT;
2023-08-17 17:58:57 database: disconnected session #1,488
2023-08-17 17:58:57 database: 
/*SQL t:101*/select PurchaseOrder.NEXTVAL as value;
2023-08-17 17:58:57 database: 
/*SQL t:104*/select PurchaseOrder.NEXTVAL as value;
2023-08-17 17:58:57 command: slow query: 104 ms, sql: select PurchaseOrder.NEXTVAL as value
2023-08-17 17:58:57 command: slow query: 102 ms, sql: select PurchaseOrder.NEXTVAL as value
2023-08-17 17:58:57 database: 
/*SQL #:1*/CALL DATABASE();
2023-08-17 17:58:57 database: 
/*SQL #:1*/CALL DATABASE();

image image

codefollower commented 1 year ago

我排查一下看看是不是 bug。

codefollower commented 1 year ago

这个是因为两个事务获取 Sequence 的下一个值时会尝试加轻量级锁,加锁失败的事务返回空记录了。

bug 已经修复,感谢报告问题。