LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

【C#】.NET 分表分库实战:原理、方案与代码落地

admin
2026年4月1日 15:43 本文热度 64

分表分库是解决单库数据量过大、查询性能瓶颈、高并发写入的核心方案,在 .NET 生态中,基于 ASP.NET Core + EF Core / SqlSugar / FreeSql 均可标准化落地,兼顾易用性与高性能。

一、分表分库核心场景与原则
1. 分表:单表数据超千万、查询变慢、索引失效,按规则拆成多张结构相同的表(同库内)。
2. 分库:单库连接数、磁盘、CPU 达到上限,按规则拆分到多个数据库实例。
3. 核心规则:
- 范围分片:按时间、ID 区间(适合日志、订单)
- 哈希分片:按用户ID/订单ID取模(适合均匀分布)
- 枚举分片:按区域、业务线拆分

二、.NET 主流分表分库框架
- SqlSugar:国内最易用,原生支持分表分库、读写分离,零入侵
- FreeSql:支持分表、分库、分布式事务
- EF Core + ShardingCore:国产开源,EF生态最强分片方案
- MyCat / ShardingSphere-Proxy:代理层分片,适配所有语言

三、SqlSugar 分表示例(最简落地)

// 1. 配置分表规则(按用户ID哈希分3张表)

var db = new SqlSugarClient(new ConnectionConfig()

{

    ConnectionString = "conn",

    DbType = DbType.MySql,

    IsAutoCloseConnection = true

});


// 分表设置

db.SetSplitTable(o => o

    .SplitType(SplitType.Hash)

    .SplitInfo("user_id", 3) // 按user_id取模分3表

    .CreateTable<Order>()); // 自动创建分表


// 2. 插入自动路由

await db.Insertable(new Order() { user_id = 1001, price = 99 }).SplitTable().ExecuteCommandAsync();


// 3. 查询自动路由

var list = await db.Queryable<Order>().Where(o => o.user_id == 1001).SplitTable().ToListAsync();


四、分库实现(多库路由)

// 配置多库连接

var db = new SqlSugarClient(new List<ConnectionConfig>()

{

    new(){ ConfigId="db_0",ConnectionString="conn0",DbType=DbType.MySql },

    new(){ ConfigId="db_1",ConnectionString="conn1",DbType=DbType.MySql }

});


// 按ID取模路由到对应库

var configId = "db_" + (user_id % 2);

var data = db.GetConnection(configId).Queryable<Order>().ToList(); 


五、分表分库关键注意事项
1. 分片键必须带在查询中,避免全表/全库扫描
2. 跨分片分页、排序、聚合需框架支持
3. 分布式事务:用最终一致性、Saga、TCC
4. 平滑扩容:优先双写+数据迁移,避免停机
5. 监控:慢查询、分片分布、连接数监控

六、适用场景总结
- 订单、用户、支付、日志等大数据量业务
- 高并发写入,单库扛不住
- .NET 后端架构升级、性能优化刚需


该文章在 2026/4/1 15:46:15 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2026 ClickSun All Rights Reserved