我的网络服务结构如下:
- 接收请求
- 解析和验证输入
- 做实际的网络服务
- 验证输出
我主要将日志记录用于调试目的,如果出现问题,我想知道请求是什么,以便我希望重现它(即发送完全相同的请求)。
目前我正在登录到 MySQL 数据库表。在 1. 之后创建一条记录,在 2. 和 3. 之后使用更多信息更新该记录,并在 4. 之后清理(修剪成功请求的日志)。
我希望日志记录尽可能快速和轻松。这里的任何加速都将大大提高整体性能(每个请求的往返)。
我正在考虑使用INSERT DELAYED
,但我不能这样做,因为我需要LAST_INSERT_ID
更新并稍后删除日志记录,或者至少记录请求的状态(即成功或错误),以便我知道何时修剪。
我可以自己生成一个唯一的 id(或者至少是一个“足够独特”的 id),但即使那样我也不知道DELAYED
语句的顺序,我最终可能会尝试更新或删除一条尚不存在的记录。而且由于DELAYED
也消除了使用的能力,NUM_AFFECTED_ROWS
我无法检查查询是否受到影响。
有什么建议么?