首页/新闻资讯/正文详情

EFCore.Sharding配置详解:自定义分表规则与全局设置最佳实践

发布时间:2026/11/8 2:50:04 来源:云帆数科 栏目:资讯中心
EFCore.Sharding配置详解:自定义分表规则与全局设置最佳实践
EFCore.Sharding配置详解自定义分表规则与全局设置最佳实践【免费下载链接】EFCore.ShardingDatabase Sharding For EFCore项目地址: https://gitcode.com/gh_mirrors/ef/EFCore.ShardingEFCore.Sharding是一款专为Entity Framework Core设计的数据库分表框架通过灵活的分表规则配置和全局设置帮助开发者轻松实现数据分片存储提升系统性能和可扩展性。无论是哈希取模分表还是按时间范围分表都能通过简单的API快速集成到现有项目中。分表规则核心概念与类型EFCore.Sharding提供两种主流分表策略通过ShardingRule类实现规则定义该类位于src/EFCore.Sharding/Primitives/ShardingRule.cs。哈希取模分表HashMod基于指定字段的哈希值进行取模运算将数据均匀分布到多个表中。适用于数据访问频率均匀、无明显时间规律的场景。核心参数包括ShardingField分表字段名如订单IDMod分表数量决定数据分布的表数量日期分表Date根据时间字段自动创建按时间范围划分的表如按日、按月。适用于具有明显时间序列特征的数据如日志、订单记录等。核心参数包括ExpandByDateMode时间粒度支持分钟、小时、日、月、年ShardingField日期类型的分表字段如创建时间自定义分表规则配置步骤1. 哈希取模分表配置通过IShardingBuilder的SetHashModSharding方法配置在启动时注册分表规则// 示例对Order实体按Id字段进行3表哈希分表 services.AddEFCoreSharding(config { config.SetHashModShardingOrder(nameof(Order.Id), 3); });上述代码会将Order表按Id字段的哈希值取模3分散到Order_0、Order_1、Order_2三个物理表中。实际项目中可参考examples/Demo.ModSharding/Program.cs的完整实现。2. 日期分表配置使用SetDateSharding方法配置时间范围分表支持指定起始时间和时间粒度// 示例对AuditLog按创建时间按月分表 var startTime new DateTime(2023, 1, 1); services.AddEFCoreSharding(config { config.SetDateShardingAuditLog( nameof(AuditLog.CreateTime), ExpandByDateMode.PerMonth, startTime ); });此配置会自动创建AuditLog_202301、AuditLog_202302等按月命名的物理表。详细示例可查看examples/Demo.DateSharding/Program.cs。高级分表规则多数据源与范围映射多数据源分表支持将不同范围的数据路由到不同数据源通过传入范围数组实现// 示例将Id 0-10000路由到SourceA10001-20000路由到SourceB config.SetHashModShardingOrder( nameof(Order.Id), 20000, (0, 10000, SourceA), (10001, 20000, SourceB) );时间范围映射对日期分表也支持多数据源配置不同时间段的数据存储到不同数据库// 示例2023年数据存储到Year2023库2024年数据存储到Year2024库 config.SetDateShardingAuditLog( nameof(AuditLog.CreateTime), ExpandByDateMode.PerYear, (new DateTime(2023, 1, 1), new DateTime(2024, 1, 1), Year2023), (new DateTime(2024, 1, 1), DateTime.MaxValue, Year2024) );全局设置最佳实践1. 基础配置项通过IShardingBuilder接口提供丰富的全局设置核心配置包括方法作用示例SetCommandTimeout设置SQL命令超时时间SetCommandTimeout(30)MigrationsWithoutForeignKey迁移时忽略外键MigrationsWithoutForeignKey()CreateShardingTableOnStarting启动时自动创建分表CreateShardingTableOnStarting(true)EnableShardingMigration启用分表迁移支持EnableShardingMigration(true)2. 逻辑删除配置通过UseLogicDelete启用逻辑删除功能自动过滤已删除数据// 示例配置逻辑删除字段 config.UseLogicDelete( keyField: Id, // 主键字段名 deletedField: IsDeleted // 逻辑删除标记字段 );3. 数据源配置支持读写分离和多数据源配置通过UseDatabase或AddDataSource方法注册数据源// 示例配置主从分离数据源 config.UseDatabase( new[] { (主库连接字符串, ReadWriteType.Write), (从库1连接字符串, ReadWriteType.Read), (从库2连接字符串, ReadWriteType.Read) }, DatabaseType.SqlServer );常见问题与解决方案分表字段选择原则哈希分表选择分布均匀的字段如自增ID、用户ID日期分表必须使用DateTime类型字段建议选择数据写入的时间戳分表数量规划哈希分表建议根据预估数据量设置一般每个物理表控制在1000万行以内日期分表根据数据增长速度选择合适粒度如日志表按日分表订单表按月分表已有数据迁移对于历史数据迁移可使用src/EFCore.Sharding/Migrations/MigrationHelper.cs提供的工具类实现数据平滑迁移到分表结构。配置示例完整启动流程以下是一个包含分表规则和全局设置的完整配置示例var services new ServiceCollection(); services.AddEFCoreSharding(config { // 全局设置 config.SetCommandTimeout(30) .CreateShardingTableOnStarting(true) .EnableShardingMigration(true); // 分表规则配置 config.SetHashModShardingOrder(nameof(Order.Id), 10) .SetDateShardingOrderLog( nameof(OrderLog.CreateTime), ExpandByDateMode.PerDay, new DateTime(2023, 1, 1) ); // 数据源配置 config.UseDatabase(连接字符串, DatabaseType.SqlServer); });通过以上配置EFCore.Sharding将自动处理分表逻辑开发者无需关心底层物理表结构直接通过EF Core的常规API操作即可。更多配置细节可参考项目中的示例代码和src/EFCore.Sharding/DependencyInjection/IShardingBuilder.cs接口定义。【免费下载链接】EFCore.ShardingDatabase Sharding For EFCore项目地址: https://gitcode.com/gh_mirrors/ef/EFCore.Sharding创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

网盘直链下载助手:九大网盘文件高速下载终极指南
网盘直链下载助手:九大网盘文件高速下载终极指南

网盘直链下载助手:九大网盘文件高速下载终极指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 … · 2026/11/8 2:50:02

Jellium Desktop音频平衡恢复:重置平衡设置的完整指南
Jellium Desktop音频平衡恢复:重置平衡设置的完整指南

Jellium Desktop音频平衡恢复:重置平衡设置的完整指南 【免费下载链接】jellium-desktop An unofficial desktop client for Jellyfin 项目地址: https://gitcode.com/GitHub_Trending/je/jellium-desktop Jellium Desktop是一款功能强大的Jellyfin非官方桌面… · 2026/9/21 13:35:19

如何快速打造ESP32智能小车:新手完全实战指南
如何快速打造ESP32智能小车:新手完全实战指南

如何快速打造ESP32智能小车:新手完全实战指南 【免费下载链接】arduino-esp32 Arduino core for the ESP32 family of SoCs 项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32 还在为复杂的机器人项目望而却步?想要亲手制作智能小… · 2026/9/6 10:18:00

电工证有没有必要考试?内部消息告诉你实情
电工证有没有必要考试?内部消息告诉你实情

电工证有没有必要考试?内部消息告诉你实情 之前考的证在外省能不能转过来?这是很多在洛阳涧西区转岗或者准备换工作的朋友最关心的问题。别急,我来给你说个 内部消息… · 2026/11/8 2:49:05

电工证复查需要多久保姆级教程:学历不高怕报不上名?一文讲透全过程
电工证复查需要多久保姆级教程:学历不高怕报不上名?一文讲透全过程

电工证复查需要多久保姆级教程:学历不高怕报不上名?一文讲透全过程 你是不是也担心自己学历不高,考个电工证连门都进不去?别慌,电工证复查流程其实并没有那么复杂,关键是要找对方法。今天这篇保姆级教程,专门为你拆解【电工证复查需要多久】的问题,从… · 2026/11/8 2:49:05

电工证6大类怎么考?实操考试心里没底怕挂科?良心建议来了
电工证6大类怎么考?实操考试心里没底怕挂科?良心建议来了

电工证6大类怎么考?实操考试心里没底怕挂科?良心建议来了 实操考试心里没底怕挂科?电工证6大类到底怎么考?这是很多准备报考特种作业证的学员最真实的感受。很多人不是不想考,而是担心流程复杂、考试不过、拿证难,甚至怕被培训机构坑。今天就从一个过… · 2026/11/8 2:49:05

d1特种作业操作证怎么考?电子证书怎么查?怕考不过白交培训费
d1特种作业操作证怎么考?电子证书怎么查?怕考不过白交培训费

d1特种作业操作证怎么考?电子证书怎么查?怕考不过白交培训费 怕考不过白交培训费,现在考证的人越来越多,但真正了解考试流程和题型的却不多。很多人在报名前,连题型都搞不清楚,结果考试时手忙脚乱,最后白花了钱还拿不到证。今天咱们就从… · 2026/11/8 2:49:05

初级电工证图片看看网上查询有效期多久 电工工地上没人有空复习
初级电工证图片看看网上查询有效期多久 电工工地上没人有空复习

初级电工证图片看看网上查询有效期多久 电工工地上没人有空复习 工地太忙根本没时间复习考试,这是很多一线电工的真实写照,尤其是刚考完初级电工证的朋友。你可能已经拿到证了,但心里还有个大疑问: 初级电工证图片看看网上查询有效期多久… · 2026/11/8 2:49:05

你不知道的d1特种作业操作证怎么报名,别再被中介骗了!
你不知道的d1特种作业操作证怎么报名,别再被中介骗了!

你不知道的d1特种作业操作证怎么报名,别再被中介骗了! 你是不是正愁着 d1特种作业操作证怎么报名 ?网上一搜一堆信息,真假难辨,中介又乱收费,还动不动就让你交“保证金”“培训费”,结果啥也没办成。其实,这事没那么复杂,关键是 找对地方… · 2026/11/8 2:48:05

电工证丢失还能补吗?千万别踩坑,丢了证等于失业
电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。… · 2026/11/8 0:00:20

电力电缆作业证直播报名入口与办理流程良心建议
电力电缆作业证直播报名入口与办理流程良心建议

电力电缆作业证直播报名入口与办理流程良心建议 你是不是也担心学历不高报不了名?别急,今天就给你讲讲 电力电缆作业证直播 的报名流程和那些你必须知道的干货, 良心建议 在这里,别错过。 电力电缆作业证直播报名需要什么条件?… · 2026/11/8 0:00:20

英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑
英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑

英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 怕考不过白交培训费?英德电工证报考费多少钱,你真的了解吗?现在市面上培训机构五花八门,价格参差不齐,很多人一不小心就花了冤枉钱,结果还考不过。别急,今天就来给你说清楚英德电工证的… · 2026/11/8 0:00:20

电工证丢失还能补吗?千万别踩坑,丢了证等于失业
电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。… · 2026/11/8 0:00:20

电力电缆作业证直播报名入口与办理流程良心建议
电力电缆作业证直播报名入口与办理流程良心建议

电力电缆作业证直播报名入口与办理流程良心建议 你是不是也担心学历不高报不了名?别急,今天就给你讲讲 电力电缆作业证直播 的报名流程和那些你必须知道的干货, 良心建议 在这里,别错过。 电力电缆作业证直播报名需要什么条件?… · 2026/11/8 0:00:20

英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑
英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑

英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 怕考不过白交培训费?英德电工证报考费多少钱,你真的了解吗?现在市面上培训机构五花八门,价格参差不齐,很多人一不小心就花了冤枉钱,结果还考不过。别急,今天就来给你说清楚英德电工证的… · 2026/11/8 0:00:20

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/7 11:25:08

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/7 12:02:18

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/8 1:18:25

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码