EF Core 不引入锁,高并发场景 ExecuteSqlRawAsync("UPDATE Users SET Balance = Balance + {0} WHERE UserId = {1}");后如何获取 Updated 后的值?

2024-05-15 16:08:15 +08:00
 drymonfidelia
用于余额变动记录。再查一遍肯定不行,极端情况下一个用户会同时发 10000 个下单请求(客户端随硬件交付,没有升级功能,无法更新),这样不加锁余额变动记录就不准了。加锁的话性能太差了。
2872 次点击
所在节点    .NET
23 条回复
drymonfidelia
2024-05-16 11:17:10 +08:00
@bqn 对,10000 并发 同一条
forgottencoast
2024-05-26 20:47:19 +08:00
我们以前在 ODBC/OLE DB 是这样做的:
"UPDATE ....;
SELECT "
整个作为一个批处理事务脚本发过去。
niubiman
262 天前
EF 有 fromsql 方法, 如果是在 MySQL 或者 pg 下,自己写 sql, 带上 for update 即可, 如果是 mssql, 设置事务隔离级别为 RR 即可

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1041031

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX