人大金仓数据库KingbaseES 客体重用

本文详细介绍了如何在金仓数据库KingbaseES中实现客体重用,包括加载和卸载插件、配置参数、清理残留信息的过程,以及具体的技术实现细节,如共享缓冲区和磁盘文件的清理机制。
摘要由CSDN通过智能技术生成

金仓数据库KingbaseES客体重用

关键字:

KingbaseES、客体重用、人大金仓

什么是客体重用

根据百度百科,客体重用(object reuse)指在对客体初始指定、分配或再分配一个主体之前,撤销对该客体的全部授权信息,当前主体获得对一个已被释放客体的访问权时,当前主体不能获得原主体活动所产生的任何信息。

KingbaseES通过在资源申请和释放的位置清除介质上残留的信息,以达到客体重用的要求。

KingbaseES的客体重用

  1. 加载插件

修改kingbase.conf文件中shared_preload_libraries 参数后重启数据库。

shared_preload_libraries = 'sysreuse_residual_data'

  1. 配置参数

ALTER SYSTEM SET sysreuse_residual_data.enable_obj_reuse = on;

SELECT sys_reload_conf();

  1. 卸载插件
  2. 修改kingbase.conf文件中shared_preload_libraries 参数后重启数据库。

shared_preload_libraries = ''

  1. 残留信息清理方法

共享缓冲区和磁盘文件均采用全0覆盖的方式清理残留数据。

实现方式

插件reuse_residual_data通过在事务提交阶段插入hook实现插入对缓存和磁盘进行清空的操作。

例如,在函数StmgrDoUnlinkAll()中,会对本轮事务中被删除的数据库对象进行缓存资源的释放和磁盘文件的删除,在DropRelFileNodesAllBuf()中调用InvalidateBuffer(),在InvalidateBuffer中插入hook:InvalidateBufferHook可以拿到缓存块并进行清理。回到函数StmgrDoUnlinkAll()中,在缓存得到释放后,会开始逐个删除磁盘文件(unlink),插入hook:stmgr_dounlinkall_hook在文件删除前将其中的全部内容使用0覆盖一遍。

参考资料

《KingbaseES产品手册》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值