SQL Server多进程多线程并发情况下如何保证insert到一张表中的某个字段顺序递增

发布于 2022-09-03 15:29:40 字数 187 浏览 14 评论 0

两个进程,每个进程中有一个线程往SQL Server的表A中insert记录,但要求整张表A中的字段a是顺序递增的

也就是1、2、3、4、5、6……

有什么办法能在尽可能少用锁,尽可能不过分影响性能的情况下解决这个需求?

用了identity关键字建表,在单线程的情况下OK,但在并发情况下并不能保证严格顺序递增!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

巷子口的你 2022-09-10 15:29:41

你是想让每个线程生成的序号连续递增吗?
你可以试试自己制作递增种子表,根据生成的记录数批量取得一批连续的序号
但这样做有个弊端,如果操作失败回滚,可能造成序号丢失一部分

烟花肆意 2022-09-10 15:29:41

两个进程本来就不是一个一个来的,还要求在无任何锁的前提下一个一个来,这不是为难数据库吗。

所以必须有两把锁,每个进程执行完后释放对方的锁。可以锁数据库的行,可以锁两个文件,可以用操作系统的锁等。

但是。。。。。。。。问题是不是一定要那么复杂?一般发现自己遇到一个稀奇古怪的问题的时候,可能需要换个角度看看自己是不是走入死胡同了。

如果想让大家帮你看看是不是走入死胡同了,最好发你原始的需求出来,而不是数据库锁什么的。

甜`诱少女 2022-09-10 15:29:41

把请求扔到队列里

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文