惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Tenable Blog
Last Week in AI
Last Week in AI
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
H
Help Net Security
F
Fortinet All Blogs
MyScale Blog
MyScale Blog
宝玉的分享
宝玉的分享
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 司徒正美
量子位
N
Netflix TechBlog - Medium
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
Recorded Future
Recorded Future
博客园 - 三生石上(FineUI控件)
Vercel News
Vercel News
aimingoo的专栏
aimingoo的专栏
I
InfoQ
Microsoft Security Blog
Microsoft Security Blog
Scott Helme
Scott Helme
The Last Watchdog
The Last Watchdog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
IT之家
IT之家
AI
AI
WordPress大学
WordPress大学
Security Archives - TechRepublic
Security Archives - TechRepublic
Google Online Security Blog
Google Online Security Blog
U
Unit 42
V2EX - 技术
V2EX - 技术
MongoDB | Blog
MongoDB | Blog
Schneier on Security
Schneier on Security
博客园 - Franky
H
Heimdal Security Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Jina AI
Jina AI
W
WeLiveSecurity
P
Privacy & Cybersecurity Law Blog
Cloudbric
Cloudbric
B
Blog RSS Feed
N
News | PayPal Newsroom
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
I
Intezer
Hacker News - Newest:
Hacker News - Newest: "LLM"
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
博客园_首页
罗磊的独立博客
H
Hackread – Cybersecurity News, Data Breaches, AI and More
雷峰网
雷峰网

博客园 - Zzx飘遥

发布一个注册类型库(TypeLib)的小工具 【软件发布】发布一个查单词的小工具 COM 入门(4) COM 入门(3) COM 入门(2) COM 入门(1) C#内嵌汇编代码的讨论 仿Win7显示桌面的工具 Deep Zoom Composer初探 ASP.NET VirtualPathProvider (下) Silverlight3离线运行 [译]理解Windows消息循环 WPF BitmapImage与byte[]的转换 VC++中启用XP主题外观 C#4.0初探:dynamic 关键字 - Zzx飘遥 - 博客园 四个字节整型转换为IP格式 - Zzx飘遥 - 博客园 拯救开启桌面效果后白屏的openSUSE 软件更新:网页设计师必备 之 网站截图工具 (附源码) C#4.0初探: Optional and named parameters
遭遇SqlDataReader锁定表
Zzx飘遥 · 2009-03-29 · via 博客园 - Zzx飘遥

一个数据表,按一定的筛选条件进行检索,检索结果用SqlDataReader逐条读取数据,对检索到的结果进行处理后更新数据库,使其不再符合上述的筛选条件。
当数据表的数据量比较小时,运行正常;当符合条件的数据量较大时(1W多/这个数据与表的结构、表内总数据量、机器性能的有关),更新会报超时错误。
原因是检索时会对表进行锁定,其他连接读取数据时没问题,但更新由于锁的原因会失败,发现DataReader对表进行了锁定。

解决方法:
1.数据量小的时候,将数据加载到DataTable活填充到实体类列表,然后遍历处理更新。这个方法在数据量太大时会造成性能瓶颈。

2.如果数据量大,每次读取一定的数量,然后采用方法1进行处理。缺点是:当有些符合检索条件的数据不符合处理的条件时,不符合条件的数据会累积,累计数量超过每次读取的数量(这里有个排序问题)时,会block住,无法处理新的数据。

3.在检索时显式指定不对表进行锁定,语句为:

select col1, col2, ...
from table1 with(nolock)
where ...

这种方法会造成潜在的数据不一致。

4.还有一种是按分页的思路,用方法1每次处理一页,进行适当的调整后可以解决这个问题。