事务提交前 表的读取

ynyn0829 2011-11-23 01:55:08
问题:我在数据表中插入一条数据,在事务提交前,接着对该表进行读取操作(读取操作未在事务中)。结果发现,是长时间的等待。此时我在查询分析器中直接对表进行读取,查询时间也是要很久。
请问,这是为什么?难道在事务中对表进行插入时,该表已经处于锁定了还是怎么了?
...全文
77 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿非 2011-11-24
  • 打赏
  • 举报
回复
嗯,插入操作会加上排他锁。 读取的时候会加共享锁,这两个是互斥的。

只有等锁放开才能访问。 共享锁可叠加,排他锁不可以。
sywcf 2011-11-24
  • 打赏
  • 举报
回复
事务在begin时,就开始对表进行上锁了,而不是commit时才上的锁.
  • 打赏
  • 举报
回复
编写数据库访问的程序要注意,尽量让你的事务在2、3秒钟内结束。

动不动就在业务逻辑上需要保持数据一致性控制时轻率地说:“利用数据库事务加锁”,这样是完全错误的。比如说一个联网售票系统,假设一笔交易需要1分钟来录入完毕,需要保证这笔交易中涉及的(几张)票不会与别的交易产生冲突,这时候轻率地说“利用数据库事务加锁”就是非常错误的。

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧