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/7/26 13:30:08 阅读更多 →
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/7/26 13:29:08 阅读更多 →
如何快速打造ESP32智能小车:新手完全实战指南

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

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

2026/7/26 13:29:08 阅读更多 →

最新新闻

G-Helper:3步解锁华硕笔记本隐藏性能,告别Armoury Crate臃肿时代

G-Helper:3步解锁华硕笔记本隐藏性能,告别Armoury Crate臃肿时代

G-Helper:3步解锁华硕笔记本隐藏性能,告别Armoury Crate臃肿时代 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, …

2026/7/26 13:37:11 阅读更多 →
Calibre中文路径保护插件:告别拼音乱码,让中文书名清晰可见

Calibre中文路径保护插件:告别拼音乱码,让中文书名清晰可见

Calibre中文路径保护插件:告别拼音乱码,让中文书名清晰可见 【免费下载链接】calibre-do-not-translate-my-path Switch my calibre library from ascii path to plain Unicode path. 将我的书库从拼音目录切换至非纯英文(中文)命…

2026/7/26 13:37:11 阅读更多 →
Photon光影包:让你的Minecraft世界焕发真实光影的终极指南

Photon光影包:让你的Minecraft世界焕发真实光影的终极指南

Photon光影包:让你的Minecraft世界焕发真实光影的终极指南 【免费下载链接】photon A gameplay-focused shader pack for Minecraft 项目地址: https://gitcode.com/gh_mirrors/photon3/photon Photon是一款专注于游戏体验的Minecraft着色器包,通…

2026/7/26 13:37:11 阅读更多 →
3分钟上手AMD Ryzen调试工具:免费解锁CPU隐藏性能的完整指南

3分钟上手AMD Ryzen调试工具:免费解锁CPU隐藏性能的完整指南

3分钟上手AMD Ryzen调试工具:免费解锁CPU隐藏性能的完整指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: http…

2026/7/26 13:37:11 阅读更多 →
VR-Reversal:智能3D转2D视频转换的革命性工具,实现沉浸式自由视角探索

VR-Reversal:智能3D转2D视频转换的革命性工具,实现沉浸式自由视角探索

VR-Reversal:智能3D转2D视频转换的革命性工具,实现沉浸式自由视角探索 【免费下载链接】VR-reversal VR-Reversal - Player for conversion of 3D video to 2D with optional saving of head tracking data and rendering out of 2D copies. 项目地址:…

2026/7/26 13:37:11 阅读更多 →
League Akari深度解析:英雄联盟LCU API自动化工具架构设计与实战指南

League Akari深度解析:英雄联盟LCU API自动化工具架构设计与实战指南

League Akari深度解析:英雄联盟LCU API自动化工具架构设计与实战指南 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League Akari…

2026/7/26 13:36:11 阅读更多 →

日新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

月新闻