如何(SQL):使得一张表中的数据可以同时被多个源所获取而不重复
2006-12-11 10:49
465 查看
SQL提供的排它锁XLOCK,可以为我们提供事务级的排它性。即在某个事务对于表进行访问时,别的事物便无法对于表进行访问,并等待到事物完成。
这是我们不愿意看到的,我们系统这些已经被访问的数据好似消失了一般,而以后的操作将无视这些被访问的数据而执行。这就需要第二个参数READPAST ,他的作用是使得访问跳过那么些已经被其他事物锁住的数据行,而直接返回数据。
例如,假定表 T1 包含一个单精度整数列,其值为1、2、3、4 和 5。如果事务 A 将值 3 值更改为 8,但尚未提交,则 SELECT * FROM T1 (READPAST) 将生成值 1、2、4 和 5。使用 SQL Server 表实现工作队列时,READPAST 主要用于减少锁定争用。使用 READPAST 的队列读取器会跳过被其他事务锁定的队列项,跳至下一个可用的队列项,而不是等待其他事务释放锁。
那么对于一个被多个源同时访问的SQL,起就必须同时具有XLOck和readPast这样的特性,如
最后一项a为表Table上的索引,用以指定其查询时所用之索引。
相关内容http://msdn2.microsoft.com/zh-cn/library/ms187373.aspx
select * from Table with (xlock, readpast, index(a))
这是我们不愿意看到的,我们系统这些已经被访问的数据好似消失了一般,而以后的操作将无视这些被访问的数据而执行。这就需要第二个参数READPAST ,他的作用是使得访问跳过那么些已经被其他事物锁住的数据行,而直接返回数据。
例如,假定表 T1 包含一个单精度整数列,其值为1、2、3、4 和 5。如果事务 A 将值 3 值更改为 8,但尚未提交,则 SELECT * FROM T1 (READPAST) 将生成值 1、2、4 和 5。使用 SQL Server 表实现工作队列时,READPAST 主要用于减少锁定争用。使用 READPAST 的队列读取器会跳过被其他事务锁定的队列项,跳至下一个可用的队列项,而不是等待其他事务释放锁。
那么对于一个被多个源同时访问的SQL,起就必须同时具有XLOck和readPast这样的特性,如
最后一项a为表Table上的索引,用以指定其查询时所用之索引。
相关内容http://msdn2.microsoft.com/zh-cn/library/ms187373.aspx
select * from Table with (xlock, readpast, index(a))
相关文章推荐
- sql :将一张表的数据插入到另一张表中同时要消除重复的数据
- 在进行一张表进行groupby后获取最大id和最小id数据的sql语句
- sql语句,如何找出重复的数据
- 用sql语句查询一张表中重复的数据
- SQL语句-统计全部数据,过滤掉其中两个字段同时重复的记录
- sql 查出一张表中重复的所有记录数据
- oracle sql developer 如何支持多个窗体,打开多张表,多个tab,同时查看多个数据表
- 答:SQLServer DBA 三十问之六:Job信息我们可以通过哪些表获取;系统正在运行的语句可以通过哪些视图获取;如何获取某个T-SQL语句的IO、Time等信息;
- 删除一个表中的重复数据同时保留第一次插入那一条以及sql优化
- 如何在T-SQL中获取逗号分割的字符串数据中的元素?
- 删除一个表中的重复数据同时保留第一次插入那一条以及sql优化
- sql 查出一张表中重复的所有记录数据
- sql 查出一张表中重复的所有记录数据
- MySQL如何用一条SQL将一张表里的数据插入到另一张表
- sql 根据指定条件获取一个字段批量获取数据插入另外一张表字段中+MD5加密
- mysql 如何用一条SQL将一张表里的数据插入到另一张表 3个例子
- sql 查出一张表中重复的所有记录数据
- sql 查出一张表中重复的所有记录数据
- 如何获取sql数据中时间的月份、年份(类型date)
- 数据库SQL语句:查询一张表中某字段重复的数据