首页 > 其他分享 >达梦对数据表添加列和删除列优化测试

达梦对数据表添加列和删除列优化测试

时间:2024-01-24 15:05:33浏览次数:27  
标签:OPT -- value 数据表 添加 TABLE 默认值 ALTER 达梦

背景需求 近期项目中碰到一个问题,涉及到应用版本更新,每次更新,就需要对业务系统中上千个表进行增加列或删除列的操作,每个表数据量都比较大,对一个表增加一个列就需要几分钟,导致整个升级需要十几个小时,而同样的在oracle只需要半个小时完成,如果涉及到大版本更新,一次跟新就需要往表添加或删除多个字段,会导致升级时间不可控。 达梦有ALTER_TABLE_OPT参数可以对列操作进行优化。 参数详解 1 对于添加列,当设置INI参数ALTER_TABLE_OPT为1时,添加列采用查询插入实现,可能会导致ROWID的改变; 2 ALTER_TABLE_OPT 为 2 时,系统开启快速加列功能,对于没有默认值或者默认值为 NULL 的新列,系统内部会标记为附加列,能够达到瞬间加列的效果,此时记录 ROWID 不会改变,若有默认值且默认值不为NULL,则默认值的存储长度不能超过 4000 字节,此时仍旧采取查询插入实现; 3 ALTER_TABLE_OPT 为 3 时,系统会开启快速加列功能,允许指定新增列的默认值,系统会为该列设置附加列标记,查询表中已存在的数据时,会自动为记录设置追加列默认值,此时记录 ROWID 不会改变。 现本地进行测试,当ALTER_TABLE_OPT设置不同值时,增加列和删除列的效果 数据库版本 1-3-62-2023.11.27-209835-20067-SEC --创建测试表 drop table if exists emp; create table emp (eid int primary key identity(1,1),ename varchar(200),age int,hiredate date,deptno int); declare i int; begin for i in 1..5000000 loop insert into emp (ename,age,hiredate,deptno) select dbms_random.string('2',trunc(dbms_random.value(2,8))), trunc(dbms_random.value(1,100)),  ADD_DAYS(sysdate(),dbms_random.value(-10000,-10)), trunc(dbms_random.value(1,6)) from dual; end loop; if  mod(i,5000)=0 then commit; end if; end; 当默ALTER_TABLE_OPT认值0 时,执行时间如下 --增加字段 --删除字段 ALTER_TABLE_OPT=1时, 执行时间如下 sp_set_para_value(1,'ALTER_TABLE_OPT',1); --增加字段 --删除字段 ALTER_TABLE_OPT=2时,执行时间如下 sp_set_para_value(1,'ALTER_TABLE_OPT',2); --增加字段 --删除字段 ALTER_TABLE_OPT=3时,执行时间如下 sp_set_para_value(1,'ALTER_TABLE_OPT',3); --增加字段 --删除字段 ALTER_TABLE_OPT重新改成0 时,执行时间如下: sp_set_para_value(1,'ALTER_TABLE_OPT',0);   经过测试结果得到结论如下: 当只要ALTER_TABLE_OPT设置为3时,对于表添加列有非常明显的效果,但设置1,2,3时对删除表中列均没有效果,而且比默认值更慢。            

标签:OPT,--,value,数据表,添加,TABLE,默认值,ALTER,达梦
From: https://www.cnblogs.com/fangzpa/p/17984648

相关文章

  • add 添加一条数据
    //云端函数'usestrict';constdb=uniCloud.database()exports.main=async(event,context)=>{ constcollection=db.collection(event.name) constres=awaitcollection.add(event.data) returnres};//前端js调用add(){ uni.showLoading({ ti......
  • Kettle部署centos7并添加远程图形界面访问
    Kettle部署centos7并添加远程图形界面访问安装运行环境安装远程访问(xmanager)添加中文支持安装运行环境kettle需要java环境才能运行,因此要安装Java,点击我查看部署jdk。安装图形化界面1yumgroupinstall"XWindowSystem" 上传ketle文件,并上传至服务器......
  • 【专题】2023年大语言模型综合评测报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=33624原文出处:拓端数据部落公众号自2022年年末以来,人工智能大模型已成为技术领域甚至全球创新领域最受关注的话题。以ChatGPT为代表的大模型产品发展迅速,预测数据显示,到2030年,AIGC市场规模有望超过万亿元。2023年,国内主要厂商也相继推出自研的大语......
  • 在IIS中添加7z MIME 类型
    在InternetInformationServices(IIS)中添加7zMIME类型,允许服务器识别和正确处理.7z文件。下面是如何在IIS中添加7zMIME类型的步骤:打开IIS管理器:点击“开始”按钮,打开“运行”,输入inetmgr,然后按回车键,或者通过控制面板中的“管理工具”来启动IIS管理器。选择你要配置......
  • 【专题】2023年新能源汽车、智能汽车、车险行业报告汇总PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=34910本文主要研究了汽车品牌的影响力以及汽车行业的营销新增量。通过调研新能源汽车及用户需求、特点和偏好,分析了中国新能源汽车市场的发展趋势和内容生态。同时,探讨了智能汽车的发展趋势、云服务和数字化人才需求。此外,还分析了中国汽车出海、新......
  • 【专题】中国中小企业数字化转型研究报告(2022)PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=33471数字化转型指数报告2022合集根据“基础设施-平台-应用”三层指标体系,对全国300余个城市、10余个行业的数字化发展规模进行了评估。该报告提供了覆盖全国范围的季度数字化转型指数,为各行各业推进数字化转型提供了有益的参考。报告的评估结果可以......
  • 【Powershell】在 PowerShell 数组中添加和删除项
    在PowerShell数组中添加和删除项是一个可能会导致一些意外的报错,这里我把可用的办法总结一下。问题:创建一个数组,我们将记下System.Array类型:$Fruits="Apple","Pear","Banana","Orange"$Fruits.GetType()但是,如果我们尝试向数组添加或删除项目,则会出现“集合大小固定”的错误......
  • 【专题】2023年电商行业报告汇总PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=34900原文出处:拓端数据部落公众号随着全球电商市场在疫情后持续发展,中国市场占据了半壁江山,对全球电商格局产生了重大影响。中国的三至五线城市的城镇人口众多,约占总城镇人口的65%,并且随着移动互联网的普及,这些城市构成了纵深市场,其用户规模正在稳......
  • cmake管理的代码工程添加openssl库
    提问:我写了一个C++的代码,用的cmake来管理的代码。我的C++代码里面用到了#include<openssl/ssl.h>。我在cmake里面有include_directories(/usr/include),因为openssl在/usr/include目录下面。cmake是编译一个sylar2023的动态库,动态库里面要包含ssl里面的文件或方法或者库......
  • 添加虚拟列
    constgridRef=grid.getReference();if(!gridRef)returngrid.getStore().on('beforeload',function(store,records,successful,eOpts){grid.getStore().getModel().addFields([{name:'tf_allocateAmount',......