一种在线修改数据库表空间数据块长度的方法及系统技术方案

技术编号:33348685 阅读:23 留言:0更新日期:2022-05-08 09:49
本发明专利技术提供了一种在线修改数据库表空间数据块长度的方法及系统,方法包括根据原表空间中对象大小的总和创建临时表空间,所述临时表空间中数据块的长度与原表空间中数据块长度不同;获取原表空间的对象数据块,进行对象数据块的移动,若临时表空间数据块变大,则将原表空间的对象数据块合并,写入临时表空间数据块中;若临时表空间数据块变小,则将原表空间的对象数据块拆分,分别写入临时表空间数据块中;至原表空间的对象处理完毕,删除原表空间,将临时表空间的名称修改为原表空间名称。本发明专利技术为数据库通过变更数据块大小调整数据库性能提供了一种新的选择,便于数据库优化。便于数据库优化。便于数据库优化。

【技术实现步骤摘要】
一种在线修改数据库表空间数据块长度的方法及系统


[0001]本专利技术涉及数据库
,尤其是一种在线修改数据库表空间数据块长度的方法及系统。

技术介绍

[0002]数据块长度DB_BLOCK_SIZE作为数据库的最小操作单位,DB_BLOCK_SIZE一般设置为操作系统块的倍数,即2K,4K,8K,16K或32K,但它的大小一般受数据库用途的影响。对于联机事务,其特点是事务量大,但每个事务处理的数据量小,所以DB_BLOCK_SIZE设置小点就足够了,一般为4K或者8K,设置太大话一次读出的数据有部分是没用的,并且会拖慢数据库的读写时间,同时增加非必要的I/O操作。而对于数据仓库和ERP方面的应用,每个事务处理的数据量很大,所以DB_BLOCK_SIZE一般设置得比较大,一般为8K,16K或者32K,此时如果DB_BLOCK_SIZE小的话,那么I/O次数自然就会增多,消耗也会增大。
[0003]大一点的DB_BLOCK_SIZE对索引的性能有一定的提高,因为DB_BLOCK_SIZE比较大的话,一个DB_BLOCK一次能够读取索引的行数就比较多。对于行比较大的记录,如果一个DB_BLOCK放不下一行,数据库在读取数据的时候就需要进行行链接,行链接影响读取性能。此时DB_BLOCK_SIZE大一点的话就可以避免这种情况的发生。
[0004]一个数据库由于用途不同可能需要使用不同大小的数据块,但在创建数据库或表空间时可能未考虑数据块大小对性能的影响,可能只有当性能受到数据块大小影响时才意识到需要调整数据块大小来改善性能,但对一个已经上线的生产数据库调整数据块大小却非常麻烦。一个表空间创建后,它的块大小就不再改变了,如果要调整其中对象(表、索引等)使用的块大小,需要新建一个使用特定数据块大小的表空间,然后将表空间中的对象通过MOVE命令移动到新的表空间。或者,将表空间中数据导出来,然后将表空间删除重建表空间,再将数据导回到表空间。以上这两种方式在操作过程中都会造成表空间下对象无法访问,影响数据库正常使用的问题。

技术实现思路

[0005]本专利技术提供了一种在线修改数据库表空间数据块长度的方法及系统,用于解决现有数据块长度调整方式影响数据库正常使用的问题。
[0006]为实现上述目的,本专利技术采用下述技术方案:
[0007]本专利技术第一方面提供了一种在线修改数据库表空间数据块长度的方法,所述方法包括以下步骤:
[0008]根据原表空间中对象大小的总和创建临时表空间,所述临时表空间中数据块的长度与原表空间中数据块长度不同;
[0009]获取原表空间的对象数据块,进行对象数据块的移动,若临时表空间数据块变大,则将原表空间的对象数据块合并,写入临时表空间数据块中;若临时表空间数据块变小,则将原表空间的对象数据块拆分,分别写入临时表空间数据块中;且设置移动过程中对表空
间数据块的读写策略;
[0010]重复上一步的操作,至原表空间的对象处理完毕,删除原表空间,将临时表空间的名称修改为原表空间名称。
[0011]进一步地,所述方法还包括以下步骤:
[0012]为表空间数据块长度的修改增加处理进程,并增加进程参数,所述进程参数用于指定同时处理对象数据块修改的进程数量。
[0013]进一步地,所述读写策略中数据库对当前对象进行读操作的具体处理过程为:
[0014]若读取的数据块还在原表空间,则依据原数据块大小进行读取;
[0015]若读取的数据块在临时表空间,临时表空间数据块比原表空间数据块小,则读取原表空间对象对应的数据块,将该数据块合并,以原表空间数据块长度返给数据库;
[0016]若读取的数据块在临时表空间,临时表空间数据块比原表空间数据块大,则读取原表空间对象对应的数据块,将该数据块拆分,以原表空间数据块长度返给数据库。
[0017]进一步地,所述读写策略中数据库对当前对象进行写操作的具体处理过程为:
[0018]若需要写入的数据块在原表空间,则依原数据块大小进行写入;
[0019]若需要写入的数据块在临时表空间,临时表空间数据块比原表空间数据块大,需要写入的数据块不是新块,则在临时表空间找到要写入数据块对应的合并后的数据块,更新合并后的数据块完成写入;若要写入的数据块是新块,则将该新块合并后写入临时表空间数据块中;
[0020]若需要写入的数据块在临时表空间,临时表空间数据块比原表空间数据块小,需要写入的数据块不是新块,则在临时表空间找到要写入数据块对应的拆分后的数据块,更新拆分后的数据块完成写入;若要写入的数据块是新块,则将该新块拆分写入临时表空间数据块中。
[0021]进一步地,所述写入临时表空间数据块后还包括:为临时表空间数据块构建数据块块头数据。
[0022]进一步地,所述创建临时表空间之前还包括调用修改表空间数据块的命令。
[0023]进一步地,所述数据块长度为2K、4K、8K、16K或32K中的一种。
[0024]本专利技术第二方面提供了一种在线修改数据库表空间数据块长度的系统,所述系统包括:
[0025]临时表空间创建单元,根据原表空间中对象大小的总和创建临时表空间,所述临时表空间中数据块的长度与原表空间中数据块长度不同;
[0026]对象移动单元,获取原表空间的对象数据块,进行对象数据块的移动,若临时表空间数据块变大,则将原表空间的对象数据块合并,写入临时表空间数据块中;若临时表空间数据块变小,则将原表空间的对象数据块拆分,分别写入临时表空间数据块中;且设置移动过程中对表空间数据块的读写策略;
[0027]表空间替换单元,在原表空间的对象处理完毕后,删除原表空间,将临时表空间的名称修改为原表空间名称。
[0028]进一步地,所述系统还包括进程控制单元,所述进程控制单元用于为表空间数据块长度的修改增加处理进程,并增加进程参数,所述进程参数用于指定同时处理对象数据块修改的进程数量。
[0029]进一步地,所述对象移动单元还包括数据读写处理子单元,用于在数据块移动过程中,数据库对数据块读写操作的控制。
[0030]本专利技术第二方面的所述修改数据库表空间数据块长度的系统能够实现第一方面及第一方面的各实现方式中的方法,并取得相同的效果。
[0031]
技术实现思路
中提供的效果仅仅是实施例的效果,而不是专利技术所有的全部效果,上述技术方案中的一个技术方案具有如下优点或有益效果:
[0032]本专利技术基于原表空间中对象总大小建立临时表空间,并将对象从原表空间移动至临时表空间,并在在移动过程中设置数据库的读写策略,整个移动过程不影响对象的正常使用。另外通过参数控制处理对象的进程数量,进而控制对象处理的IO效率,避免资源消耗。在对象数据块处理时通过数据块合并和拆分,实现在不影响数据块读写的情况下完成数据块大小变更。通过以上方式,在线完成表空间数据块大小变更,同时通过逻辑处理避免了重建表空间或MOVE命令修改对象表空间等方式造成对象无本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种在线修改数据库表空间数据块长度的方法,其特征是,所述方法包括以下步骤:根据原表空间中对象大小的总和创建临时表空间,所述临时表空间中数据块的长度与原表空间中数据块长度不同;获取原表空间的对象数据块,进行对象数据块的移动,若临时表空间数据块变大,则将原表空间的对象数据块合并,写入临时表空间数据块中;若临时表空间数据块变小,则将原表空间的对象数据块拆分,分别写入临时表空间数据块中;且设置移动过程中对表空间数据块的读写策略;重复上一步的操作,至原表空间的对象处理完毕,删除原表空间,将临时表空间的名称修改为原表空间名称。2.根据权利要求1所述在线修改数据库表空间数据块长度的方法,其特征是,所述方法还包括以下步骤:为表空间数据块长度的修改增加处理进程,并增加进程参数,所述进程参数用于指定同时处理对象数据块修改的进程数量。3.根据权利要求1所述在线修改数据库表空间数据块长度的方法,其特征是,所述读写策略中数据库对当前对象进行读操作的具体处理过程为:若读取的数据块还在原表空间,则依据原数据块大小进行读取;若读取的数据块在临时表空间,临时表空间数据块比原表空间数据块小,则读取原表空间对象对应的数据块,将该数据块合并,以原表空间数据块长度返给数据库;若读取的数据块在临时表空间,临时表空间数据块比原表空间数据块大,则读取原表空间对象对应的数据块,将该数据块拆分,以原表空间数据块长度返给数据库。4.根据权利要求1所述在线修改数据库表空间数据块长度的方法,其特征是,所述读写策略中数据库对当前对象进行写操作的具体处理过程为:若需要写入的数据块在原表空间,则依原数据块大小进行写入;若需要写入的数据块在临时表空间,临时表空间数据块比原表空间数据块大,需要写入的数据块不是新块,则在临时表空间找到要写入数据块对应的合并后的数据块,更新合并后的数据块完成写入;若要写入的数据块是新块,则将该新块合并后写入临时表空间数据块中;若需要写入的数据块在临时表空间...

【专利技术属性】
技术研发人员:马国良陈彬张洪宾
申请(专利权)人:苏州浪潮智能科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1