接入 OpenTelemetry 1.17.0,覆盖 HTTP、HttpClient、.NET Runtime 和数据库链路。
新增 EF Core 数据库拦截器,记录耗时、失败数、慢查询数、TraceId、查询标签和 SQL 哈希;默认不记录完整 SQL及参数。 未配置 OTLP Collector 时不启动 SDK,避免无收益的性能开销。 为课表的作息、课程、灵活课程、考试、实验等六类查询增加稳定标签。 增加可配置的 500ms 慢查询阈值,以及生产环境变量示例。 README 补充 MySQL 慢查询与 EXPLAIN ANALYZE 操作规范。
This commit is contained in:
@@ -28,6 +28,7 @@ public sealed class TimetableDataService(AppDbContext db)
|
||||
allowUnpublishedPlan,
|
||||
cancellationToken);
|
||||
var slots = await db.ScheduleTimeSlots.AsNoTracking()
|
||||
.TagWith("Timetable.LoadTimeSlots")
|
||||
.Where(x => x.AcademicTermId == term.Id && x.IsEnabled)
|
||||
.OrderBy(x => x.PeriodNumber)
|
||||
.Select(x => new TimetableSlotDto(
|
||||
@@ -76,6 +77,7 @@ public sealed class TimetableDataService(AppDbContext db)
|
||||
}
|
||||
|
||||
entries = await source
|
||||
.TagWith("Timetable.LoadScheduleEntries")
|
||||
.OrderBy(x => x.DayOfWeek)
|
||||
.ThenBy(x => x.StartPeriod)
|
||||
.ThenBy(x => x.TeachingTask!.Course!.Code)
|
||||
@@ -283,6 +285,7 @@ public sealed class TimetableDataService(AppDbContext db)
|
||||
}
|
||||
|
||||
return await source
|
||||
.TagWith("Timetable.LoadFlexibleCourses")
|
||||
.OrderBy(x => x.Course!.Code)
|
||||
.ThenBy(x => x.TaskNumber)
|
||||
.Select(x => new FlexibleCourseDto(
|
||||
@@ -326,6 +329,7 @@ public sealed class TimetableDataService(AppDbContext db)
|
||||
legacyQuery, resourceType, resourceId, studentId);
|
||||
|
||||
var legacySessions = await legacyQuery
|
||||
.TagWith("Timetable.LoadLegacyExamEntries")
|
||||
.OrderBy(x => x.ExamDate)
|
||||
.ThenBy(x => x.StartPeriod)
|
||||
.Select(x => new ExamSessionProjection(
|
||||
@@ -416,6 +420,7 @@ public sealed class TimetableDataService(AppDbContext db)
|
||||
db,
|
||||
studentId.Value);
|
||||
var sessions = await db.ExperimentSessions.AsNoTracking()
|
||||
.TagWith("Timetable.LoadExperimentEntries")
|
||||
.AsSplitQuery()
|
||||
.Where(x =>
|
||||
x.ExperimentProject!.TeachingTask!.AcademicTermId == term.Id &&
|
||||
|
||||
Reference in New Issue
Block a user