C#性能优化:大批量数据操作详解与示例代码
创作时间:
作者:
@小白创作中心
C#性能优化:大批量数据操作详解与示例代码
引用
CSDN
1.
https://m.blog.csdn.net/cplvfx/article/details/145877865
在C#开发中,性能优化是提升系统响应速度和资源利用率的关键环节。特别是在处理大批量数据操作时,合理的优化策略可以显著提升应用程序的整体性能。本文将详细介绍在进行大批量数据查询和删除时的具体优化方法,并提供相应的示例代码。
11.大批量数据操作
当需要对数据库进行大批量数据操作的时候,推荐使用分批操作的功能,比如一百万条数据将其分为每一万条数据进行数据库操作,而不是每条数据循环去进行操作。
查询
分批查询对数据库的压力较小,如果那一张表在这个时候可能其他地方也更新或新增 可能需要考虑增加with(NOLOCK) ,当然如果是EF 就套上读未提交的事务(会变卡) 也可以让查询不加锁。
当执行大规模数据查询时,分批查询可以显著降低对数据库的压力,并提高响应速度。具体方法包括但不限于:
- 使用分页查询:通过限制每次查询返回的数据量(如每批次10,000条记录),并使用偏移量或标识符来追踪已经检索的数据。
- 增加
WITH (NOLOCK)
提示:在SQL Server中,
WITH (NOLOCK)
提示允许查询在不请求共享锁的情况下读取数据,这可以避免由于其他事务持有排他锁而造成的阻塞问题。但需要注意的是,使用
NOLOCK
可能会导致脏读(读取到未提交的数据)。 - Entity Framework中的读未提交隔离级别:在EF中可以通过设置事务的隔离级别为
ReadUncommitted
来达到类似
WITH (NOLOCK)
的效果。虽然这种方法能减少锁定,但也可能导致脏读。
using (var context = new YourDbContext())
{
using (var transaction = context.Database.BeginTransaction(System.Data.IsolationLevel.ReadUncommitted))
{
// 执行你的查询逻辑
var queryResult = context.YourEntities.ToList();
transaction.Commit();
}
}
删除
首推根据主健进行删除,因为数据库根据主键的索引查找和删除数据非常快,当然分批更好。
对于大批量数据的删除操作,以下策略有助于提升效率:
- 基于主键删除:由于数据库通常会为主键创建索引,因此根据主键进行删除是最快的方法之一。
- 分批删除:将要删除的数据分为多个小批次进行操作,以减轻数据库压力。例如,每次只删除一定数量的记录,直到所有需要删除的数据都被处理完毕。
下面是一个简单的示例,展示了如何使用C#和ADO.NET实现基于主键的分批删除:
public void BatchDelete(string connectionString, string tableName, List<int> ids)
{
const int batchSize = 1000;
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
for (int i = 0; i < ids.Count; i += batchSize)
{
var batchIds = ids.Skip(i).Take(batchSize);
string inClause = string.Join(",", batchIds);
string sql = $"DELETE FROM {tableName} WHERE Id IN ({inClause})";
using (SqlCommand command = new SqlCommand(sql, connection))
{
command.ExecuteNonQuery();
}
}
}
}
这个例子中,我们定义了一个批量大小
batchSize
,然后循环遍历所有的ID列表,每次构建一个仅包含当前批次内ID的IN子句,从而实现分批删除。
记住,在进行任何大批量数据操作之前,最好先评估这些操作对数据库性能的影响,并考虑在非高峰时段执行这些任务。此外,确保有适当的备份和恢复计划以防万一。
热门推荐
红烧猪手 vs 猪脚煲汤,谁才是冬日暖胃神器?
猪蹄美容养颜,你get了吗?
AlphaFold2获诺奖,揭秘AI背后的科学理论
NLP技术揭秘:AI助手背后的智慧大脑
年节多少鼎沸事 一盏宫灯“映”洛城
秦腔发源于甘肃天水,为何叫做秦腔
德谷胰岛素的作用机制及临床应用
舌尖上的健康:这样吃告别舌头疼
维生素B2与口腔溃疡:从作用机制到临床应用
自贡市地震应急演练,救援力量大揭秘
为什么房子会漏水?如何修复和防止漏水?技巧重点整理看这里!
家里水管漏水该如何排查?
蓬莱红色文化传承,打卡革命圣地
贵人运助力,财运将来临,这几大星座即将迎接!
牟墨林的智慧与牟氏庄园的传奇
元旦打卡牟氏庄园:历史与美景尽收眼底
“土河马”App侵权案:免费剧资源背后的法律陷阱
道教超度:XX明星离世后的仪式揭秘
中国传统祭奠礼仪的心理疗愈力量
太乙救苦天尊:道教超度仪式中的慈悲使者
佛教超度仪式:科学还是迷信?
冯晓彬&韩国宏:钇-90微球治疗肝癌取得重大突破
复旦大学附属肿瘤医院福建医院:钇90微球治疗肝癌取得突破性进展
视百年眼科|干眼症是怎么引起的?预防方法有哪些
北京清华长庚医院:钇90微球治疗引领肝癌精准治疗新突破
社交媒体+行业领导力:高效营销秘籍
销售技巧培训,助你职场升级
双十一大战后,销售心态如何快速调整?
揭秘神秘西兰公国:5人国家如何“打败”英国海军
这才是中国喜剧该有的样子