我正在研究用C ++开发的企业应用程序,数据库是mariadb。该应用程序处理两个审核文件Authentication.log
和SytemDetails.log
。
审计操作要求将数据插入名为Authentication table
和SystemDetails table
的两个表中。自动ID是Authentication table
中的主键和SystemDetails table
中的外键。
Authentication table
保留身份验证信息,即会话打开,登录会话信息和SystemDetails
保存每个会话期间执行的命令的详细信息。
现在,在数据库中自动生成Authid,如下所示:
Authentication :AuthID,ParentAuthID,info1,Info2....
SystemDetails:sysid,authid,info1,info2....
它的工作原理如下:
问题:
数据库大小200k记录(认证表)。
我发现6000记录超过30分钟。
经过分析,我发现第2步和第3步是数据库增长的过程。
我觉得最好用C ++代码而不是通过数据库生成Auth id。通过此更改,我们可以删除第3步和第5步。
哪种方法可以为表生成自动ID?
答案 0 :(得分:0)
在存在多个用户的情况下生成唯一ID非常重要,可能需要写入永久存储。那很慢。客户端生成的GUID会更快。
也就是说,在插入新的子记录时,您应该已经知道了父ID(避免了步骤3),并且类似的系统详细信息只应在认证记录存在时插入到数据库中(避免步骤4)。无论您在何处生成这些ID,都是如此。