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

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

达梦数据库学习笔记 – DM支持多块读吗

本站文章除注明转载外,均为本站原创: 转载自love wife love life —Roger的Oracle/MySQL/PostgreSQL数据恢复博客

本文链接地址: 达梦数据库学习笔记 – DM支持多块读吗

在之前的研究测试中发现达梦仅支持单page写入,无法进行合并。这是针对写操作而言,那么对于读呢? 是否支持类似Oracle一样的多块读呢?这里我们仍然通过一些简单实验来进行观察分析;默认情况下MULTI_PAGE_GET_NUM参数为1,这里我将其修改为16.

与此同时,我们在进行查询时,对dm主进程进行strace跟踪,如下:

从跟踪的结果来看,IO线程最多读取了15个Block,尽管我的参数设置为了16. 初步猜想可能跟extent有关。于是进一步将参数调到到64(最大值)。如下是重建了测试表进行的读取测试和跟踪:

跟踪方式仍然一样,这里省略strace过程,直接看日志:

对于我们表所在数据文件,共计读取了38次,其中有test0330表的段头地址是175243264。也就是说针对test0330表共计读取了37次,其中1次段头,2次单块读,35次多块读(1次读了15个block,34次每次16个block).

此时我检查达梦数据库环境的extent设置发现默认值为16.

实际上对于extent_size,是在数据库初始化的时候就需要进行指定的(取值范围为16,32,64).  每次多块读的情况下,也不过跨extent大小,这可能也就是为什么dm多块读参数最大值是64了。

从前面的测试还是发现了几个小问题,其中对于extent 问题,我认为是个重大缺陷。

1、 数据库一旦初始化完成后,无法对extent_size 进行更改(巨大缺陷)

2、统计信息收集后,dba_segments等视图相关信息缺失,比如blocks,empty_blocks等。

至于说为什么无法进行extent 修改,下篇文章再谈。

Leave a Reply

You must be logged in to post a comment.