两个进程,每个进程中有一个线程往SQL Server的表A中insert记录,但要求整张表A中的字段a是顺序递增的
也就是1、2、3、4、5、6……
有什么办法能在尽可能少用锁,尽可能不过分影响性能的情况下解决这个需求?
用了identity关键字建表,在单线程的情况下OK,但在并发情况下并不能保证严格顺序递增!
自增字段有问题?
开了两个SQL Server Management studio,同时insert,最后能保证唯一,但并不是有序的
@xumenger: 你百度下Snowflake可以实现你的需求.
mark
如果楼主只是为了ID 不重复 建议使用GUID 这样就保证了每个ID唯一性
如果是数字 1 2 3 递增的话 很难保证线程安全!
是的,并发情况下还要保证有序,的确无法保证性能!
整个字段一直自增?还是某一条数据一样的自增?
某个字段一直递增
想了一下,这个需求有点扯淡
@xumenger: 一直自增那就自增就行了呗。
@顾晓北: 主要要求多进程同时往一张表中进行insert
@xumenger: 既然sqlserver,自增就完了,sqlserver默认是开启事务的,跟多线程没毛关系。。。
除非你是想,一直自增,但是如果中间的数据删除了,后面的要更新回来,比如12345,删除了3,4变成3,5变成4,这样的话,就要用另外的方法了。