培训
模块
使用 EF Core 持久保存和检索关系数据 - Training
本模块指导你完成创建数据访问项目的步骤。 你将使用 Entity Framework Core (EF Core) 连接到关系数据库并构造创建、读取、更新和删除 (CRUD) 查询。
Entity Framework Core (EF Core) 公开连续的数字指标,这些指标可以很好地指示程序的运行状况。 这些指标可用于以下目的:
EF Core 通过标准 System.Diagnostics.Metrics API 报告指标。 Microsoft.EntityFrameworkCore
是计量的名称。 建议阅读有关指标的 .NET 文档。
备注
EF Core 9.0(预览版)中引入了此功能。 请参阅以下针对旧版 EF Core 的事件计数器。
microsoft.entityframeworkcore.active_dbcontexts
microsoft.entityframeworkcore.queries
microsoft.entityframeworkcore.savechanges
microsoft.entityframeworkcore.compiled_query_cache_hits
microsoft.entityframeworkcore.compiled_query_cache_misses
microsoft.entityframeworkcore.execution_strategy_operation_failures
microsoft.entityframeworkcore.optimistic_concurrency_failures
名称 | 检测类型 | 单位 (UCUM) | 说明 |
---|---|---|---|
microsoft.entityframeworkcore.active_dbcontexts |
ObservableUpDownCounter | {dbcontext} |
当前活动的 DbContext 实例数。 |
从 Entity Framework Core 9.0 开始可用。
名称 | 检测类型 | 单位 (UCUM) | 说明 |
---|---|---|---|
microsoft.entityframeworkcore.queries |
ObservableCounter | {query} |
执行的查询的累积计数。 |
从 Entity Framework Core 9.0 开始可用。
名称 | 检测类型 | 单位 (UCUM) | 说明 |
---|---|---|---|
microsoft.entityframeworkcore.savechanges |
ObservableCounter | {savechanges} |
已保存的更改的累积计数。 |
从 Entity Framework Core 9.0 开始可用。
名称 | 检测类型 | 单位 (UCUM) | 说明 |
---|---|---|---|
microsoft.entityframeworkcore.compiled_query_cache_hits |
ObservableCounter | {hits} |
已编译查询缓存的累积命中数。 |
从 Entity Framework Core 9.0 开始可用。
名称 | 检测类型 | 单位 (UCUM) | 说明 |
---|---|---|---|
microsoft.entityframeworkcore.compiled_query_cache_misses |
ObservableCounter | {misses} |
已编译查询缓存的累积未命中数。 |
从 Entity Framework Core 9.0 开始可用。
名称 | 检测类型 | 单位 (UCUM) | 说明 |
---|---|---|---|
microsoft.entityframeworkcore.execution_strategy_operation_failures |
ObservableCounter | {failure} |
由 IExecutionStrategy 执行的失败操作的累积次数。 |
从 Entity Framework Core 9.0 开始可用。
名称 | 检测类型 | 单位 (UCUM) | 说明 |
---|---|---|---|
microsoft.entityframeworkcore.optimistic_concurrency_failures |
ObservableCounter | {failure} |
乐观并发失败的累积次数。 |
从 Entity Framework Core 9.0 开始可用。
EF Core 通过标准的 .NET 事件计数器功能报告指标;建议阅读博客文章,快速了解计数器的工作原理。
dotnet-counters 工具可附加到正在运行的进程并定期报告 EF Core 事件计数器;无需在程序中执行任何特别操作即可使用这些计数器。
首先,安装 dotnet-counters
工具:dotnet tool install --global dotnet-counters
。
接下来,找到运行 EF Core 应用程序的 .NET 进程的进程 ID (PID):
在 .NET 应用程序中,进程 ID 以 Process.GetCurrentProcess().Id
的形式提供;这对于在启动时打印 PID 非常有用。
最后,按如下方式启动 dotnet-counters
:
dotnet counters monitor Microsoft.EntityFrameworkCore -p <PID>
dotnet-counters
现在将附加到正在运行的进程并开始报告连续的计数器数据:
Press p to pause, r to resume, q to quit.
Status: Running
[Microsoft.EntityFrameworkCore]
Active DbContexts 1
Execution Strategy Operation Failures (Count / 1 sec) 0
Execution Strategy Operation Failures (Total) 0
Optimistic Concurrency Failures (Count / 1 sec) 0
Optimistic Concurrency Failures (Total) 0
Queries (Count / 1 sec) 1
Queries (Total) 189
Query Cache Hit Rate (%) 100
SaveChanges (Count / 1 sec) 0
SaveChanges (Total) 0
计数器名称 | 说明 |
---|---|
活动 DbContexts %> |
当前应用程序中活动的且未释放的 DbContext 实例的数量。 如果此数字持续增长,则可能出现了遗漏,因为 DbContext 实例未受到正确释放。 请注意,如果已启用上下文池,则此数字包括当前未使用的池化 DbContext 实例。 |
执行策略操作失败 ( total-execution-strategy-operation-failures 和 execution-strategy-operation-failures-per-second ) |
数据库操作执行失败的次数。 如果已启用重试执行策略,则这包括多次尝试同一操作时的每一次失败。 这可用于检测基础结构的瞬态问题。 |
乐观并发失败 ( total-optimistic-concurrency-failures 和 optimistic-concurrency-failures-per-second ) |
SaveChanges 因乐观并发错误(因为代码加载数据存储中的数据时该数据发生了更改)而失败的次数。 这对应于引发的 DbUpdateConcurrencyException。 |
查询 ( total-queries 和 queries-per-second ) |
执行的查询数。 |
查询缓存命中率 (%) %> |
查询缓存命中与未命中的比率。 EF Core 首次执行指定的 LINQ 查询(不包括参数)时,必须在相对繁重的进程中对其进行编译。 在普通的应用程序中,所有查询都是重用的,并且在初始预热阶段后,查询缓存命中率应稳定在 100%。 如果此数字随着时间的推移低于 100%,则性能可能因重复编译而下降,这可能是次优动态查询生成的结果。 |
SaveChanges ( total-save-changes 和 save-changes-per-second ) |
SaveChanges 的调用次数。 请注意,SaveChanges 在单批中保存多个更改,因此这不一定代表在单个实体上完成的每一个更新。 |
培训
模块
使用 EF Core 持久保存和检索关系数据 - Training
本模块指导你完成创建数据访问项目的步骤。 你将使用 Entity Framework Core (EF Core) 连接到关系数据库并构造创建、读取、更新和删除 (CRUD) 查询。