【 问题描述 】
审计类型为 DQL 时,审计日志里Message 的最后一项 Flag : 0x00000200(512) ,这里的 Flag 代表的是什么意思呢?
【 解决方法 】
审计日志 DQL 类型 message 中 Flag 标志位含义如下:
1.FLG_QUERY_STRINGOUT ( 0x00000001 )
通常,查询返回bson对象,当添加此标志时,查询返回二进制数据流
2.FLG_QUERY_FORCE_HINT ( 0x00000080 )
强制使用指定的索引进行查询,如果数据库没有通过提示指定的索引,则无法查询。
3.FLG_QUERY_PARALLED ( 0x00000020 )
启用并行子查询,每个子查询将完成扫描不同部分的数据。
4.FLG_QUERY_WITH_RETURNDATA ( 0x00000200 )
一般来说,查询不会返回数据,直到游标从数据库获取,当添加此标志,在查询响应中返回数据时,它将更高性能。
5.FLG_QUERY_FOR_UPDATE ( 0x00010000 )
当事务处于打开状态且事务隔离级别为“RC”时,默认情况下读取记录后将释放事务锁定。 但是,在设置此标志时,事务锁将不会在事务提交或回滚之前释放。 当事务关闭或事务隔离级别为“RU”时,该标志不起作用。
【参考资料】
v2.8资料:http://doc.sequoiadb.com/cn/index/Public/Home/document/208/api/java/html/classcom_1_1sequoiadb_1_1base_1_1DBQuery.html
v3.2资料:http://doc.sequoiadb.com/cn/index/Public/Home/document/302/api/java/html/com/sequoiadb/base/DBQuery.html
其中 FLG_QUERY_FOR_UPDATE 为 v3.2 版本新增。