love wife love life —Roger的Oracle/MySQL/PostgreSQL数据恢复博客

Phone:18180207355 提供专业Oracle/MySQL/PostgreSQL数据恢复、性能优化、迁移升级、紧急救援等服务

MogDB学习笔记系列 – MogDB5.0支持pageinspect和packhack工具

MogDB 5.0.2是MogDB 5.0.0的补丁版本,于2023-09-30发布;其中5.0.2版本中有如下的一些新特性和功能。

  1. 备机表级并行回放性能提升1倍
  2. 支持JAVA代码中PL/SQL匿名块绑定变量
  3. 增加了视图创建时原始语句的查询功能
  4. 增加导入超过数据库编码字符集范围的数据时报错提示
  5. 新增pagehack和pageinspect工具

这里我重点测试一下pagehack、pageinspect工具,实际上这2个工具在PostgreSQL中早就支持了。

首先需要到MogDB官网下载工具包(该工具包中还包含了其他工具,稍后文章再进行介绍),然后进行相关部署:

工具安装部署完成之后,其中的pageinspect 工具需要登录到数据库中创建extension:

另外一个pagehack工具不需要,因为其是一个离线分析小工具。这里我在测试环境中创建一个测试表来进行验收工具的基本使用。

上述例子中我创建了一个测试表test1024以及index。通过简单的数据插入,我们可以发现MogDB的数据是从page的后端当前写入的(通过lp_off即可判断).

使用pagehack之前,我们需要获得表或索引所在文件的filepath:

我们使用pagehack来分别看一下上述表和索引的情况:

从上述输出结果来看,还是非常清晰的。写到这里,我在想MogDB 对于表数据的update和delete是如何进行的呢?

我们可以看到对于update操作,实际是跟oracle类似,也是新插入一行,而修改了原行记录标记。如果是delete则是直接打标记。

然后可以vacuum操作之后,我们可以看到相关信息就发生了变化,不分空间被回收了。

上述测试表是基于默认的astore存储引擎,实际上以后主流都是ustore,虽然目前还不算太稳定,ustore的mvcc机制类似oracle了。这样我创建ustore的表然后再用工具来看看有没有什么差别呢?

通过对比我们可以看到其实还有一些差别的。

最后有人可能会用,这2个小工具有什么作用呢?实际上对于一些page损坏的情况下,上述工具就可以派上用场了;另外就是通过工具可以来深入了解一些结构和机制。

Leave a Reply

You must be logged in to post a comment.