我打算log4net
在一个新的网络项目中使用。以我的经验,我看到日志表可以有多大,我也注意到错误或异常重复出现。例如,我刚刚查询了一个包含超过 132.000 条记录的日志表,我使用 distinct 发现只有 2.500 条记录是唯一的(~2%),其他的(~98%)只是重复的。所以,我想出了这个想法来改进日志记录。
有几个新列:counter
和updated_dt
,每次尝试插入相同的记录时都会更新。
如果要跟踪导致异常的用户,需要创建一个user_log
或log_user表,来映射NN关系。
创建此模型可能会使系统尝试比较所有这些长文本时变得缓慢且效率低下......这里的技巧,我们还应该有一个hash column
16 或 32 的二进制文件,对消息和异常进行哈希处理,并在其上配置索引. 我们可以HASHBYTES
用来帮助我们。我不是 DB 方面的专家,但我认为这样可以更快地找到类似记录。并且由于散列不能保证唯一性,这将有助于更快地对那些相似的记录进行本地化,然后直接通过消息或异常进行比较,以确保它们是唯一的。
这是一个理论/实际的解决方案,但它会起作用还是带来更多的复杂性?我遗漏了哪些方面或需要考虑哪些其他因素?触发器将完成插入或更新的工作,但触发器是最好的方法吗?