Foxtable(狐表)用户栏目专家坐堂 → 操作日志占资源10分大,如何优化?


  共有3822人关注过本帖树形打印复制链接

主题:操作日志占资源10分大,如何优化?

帅哥哟,离线,有人找我吗?
lgz518
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1152 积分:7712 威望:0 精华:0 注册:2019/6/13 9:57:00
操作日志占资源10分大,如何优化?  发帖心情 Post By:2022/12/13 21:31:00 [只看该作者]



For Each dt As DataTable In DataTables
    dt.GlobalHandler.DataColChanged = True
    dt.GlobalHandler.DataRowAdded = True
Next






If e.DataTable.Name <> "操作日志" Then '”数据操作日志“是表名
    If e.DataRow.RowState = 2 Then
        Return
    Else
        Dim dr As DataRow = DataTables("操作日志").AddNew
        dr("ID") = e.DataRow("_Identify")
           ' dr("用户") = User.Name
dr("用户") = _User.Name

        dr("涉及表") = e.DataTable.Name
        dr("涉及列") = e.DataCol.Name
        dr("涉及行") = e.DataRow("_Identify")
        dr("时间") = Date.Now
        dr("操作") = """" & e.OldValue &  """ 改成了 """ & e.NewValue & """"
        Dim str As String = ""
        For Each c As DataCol In e.DataTable.DataCols
            str += c.Name & "=" & e.DataRow(c.Name) & "|"
        Next
        dr("原行数据") = str
    End If
End If






If e.DataTable.Name <> "操作日志" Then
    Dim dr As DataRow = DataTables("操作日志").AddNew
    dr("ID") = e.DataRow("_Identify")
   ' dr("用户") = User.Name
dr("用户") = _User.Name
    dr("涉及表") = e.DataTable.Name
    dr("涉及列") = Nothing
    dr("涉及行") = e.DataRow("_Identify")
    dr("时间") = Date.Now
    dr("操作") = "增加了一行"
    Dim str As String = ""
    For Each c As DataCol In e.DataTable.DataCols
        str += c.Name & "=" & e.DataRow(c.Name) & "|"
    Next
    dr("原行数据") = str
End If



        上面代码,在表,列,行都各生成一条记,我测试一下,录入一个入库单,生成420条记录,原行数据是字符最大255都不够,要备注型才行,
假如一个人一天录100单入库420*100=42000,一个月26天其日志就1092000条,一年就 13104000条,一年就生成1000万多条日志,其他业务记录没算,
这个日志数据太可怕,会把系统搞崩,
         如何优化?能不能录完一单生成对应一条日志,一天录100单,生成日志也就100条,这样相对友好。如何能实现?

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107718 积分:547917 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/13 21:41:00 [只看该作者]

这要看您自己需要这个日志记录的粒度是怎么样的。

一天录100单,生成日志也就100条】那么这每条日志要记录的是这每一单的什么东西?

个人觉得"原行数据"是没有必要记录的,有行列更改数据的记录变化就已经可以跟踪数据的更改情况了

 回到顶部