📋 表概述

lag_reports 表记录玩家客户端自动上报的网络延迟报告。当玩家遇到高延迟/卡顿时,客户端可能自动提交延迟报告,包含延迟类型、玩家位置和延迟数值等信息,帮助管理员定位网络问题。

主键为 reportId(自增)。每条记录包含延迟的具体数值(latency)、发生位置(mapId/posX/Y/Z)和发生时间,属于 Player System 模块。

📊 表结构

字段名类型默认值说明
reportIdint UNSIGNEDAUTO_INCREMENT报告ID(主键,自增)
guidint UNSIGNED0报告角色GUID
lagTypetinyint UNSIGNED0延迟类型码
mapIdsmallint UNSIGNED0延迟发生的地图ID
posXfloat0延迟发生时X坐标
posYfloat0延迟发生时Y坐标
posZfloat0延迟发生时Z坐标
latencyint UNSIGNED0延迟值(毫秒)
createTimeint UNSIGNED0报告创建时间(Unix时间戳)

🔍 重要字段详解

📡 lagType - 延迟类型

详细说明:TINYINT类型,区分不同的延迟场景。
  • 0 = 世界延迟(游戏响应慢)
  • 1 = 技能延迟(技能释放延迟)
  • 2 = 移动延迟(移动卡顿/卡地形)

⏱️ latency - 延迟数值

详细说明:INT UNSIGNED类型,实际测量的延迟毫秒数。
  • 正常值:< 200ms
  • 偏高:200~500ms
  • 严重:> 500ms
  • 极高的延迟值可能表示网络故障或服务器负载过高

📍 位置坐标

详细说明:记录延迟发生时玩家所在地图和精确坐标。
  • 帮助定位是否有特定区域/地图的高延迟问题
  • 可能与特定副本/场景的性能瓶颈有关
  • FLOAT精度记录三维坐标

💡 SQL示例

示例1:查询高延迟报告(>500ms)

SELECT reportId, guid, lagType, mapId, latency, FROM_UNIXTIME(createTime) AS report_time FROM lag_reports WHERE latency > 500 ORDER BY latency DESC LIMIT 50;

示例2:统计各地区的平均延迟

SELECT mapId, AVG(latency) AS avg_latency, MAX(latency) AS max_latency, COUNT(*) AS report_count FROM lag_reports GROUP BY mapId ORDER BY avg_latency DESC;

❓ 常见问题

Q1: 玩家手动提交延迟报告吗?
否。这是客户端自动检测并上报的,玩家无需手动操作。当检测到高延迟时自动记录到此表。
Q2: 此表数据量大怎么办?
建议定期清理:DELETE FROM lag_reports WHERE createTime < UNIX_TIMESTAMP() - 2592000;(清理30天前的报告)。