本文主要是介绍达梦大表更新速度和更新粒度测试(单机环境测试),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
### Code Reference
- DESC:dameng大表更新速度测试
- Last Update:2020-7-13 10:32
-
创建测试数据(1000W)
drop table rede."个人信息";create table rede."个人信息" as select rownum as id,to_char(sysdate + rownum / 24 / 3600, 'yyyy-mm-dd hh24:mi:ss') as "办卡日期",trunc(18510911437 - dbms_random.value(-100000, 100000)) as "电话号码",'TDE' || dbms_random.string('x', 20) as "身份证号",'TDE' || dbms_random.string('x', 15) as "银行卡号"from dualconnect by level <= 10000000;alter table rede."个人信息" add primary key("ID");
-
开始进行测试数据更新
-- 查询基表数据select rownum,T.*from rede."个人信息" Twhere 电话号码 = 18510930539;--and rownum / 1000 = 1;-- 查询更新的位置46470select count(1)from rede."个人信息" Twhere T.银行卡号='钱塘江上是谁家,江上女儿全胜花。'-- 进行数据更新 declareld_begin datetime;ld_end datetime;beginfor i in 1..5 LOOPld_begin := sysdate;-- 插入|创建临时表-- 调整批次每次为-- 500更新速度为20ms-- 1000更新速度为28ms-- 2000则为4s329ms-- 10000则为4s329ms-- 100000则为5秒 417-- 100000017秒 571-- 20200713140707 000000-20200713140647 000000-20秒-- 20200713140723 000000-20200713140707 000000-16秒-- 20200713140743 000000-20200713140723 000000-20秒-- 20200713140815 000000-20200713140743 000000-32秒-- 20200713140850 000000-20200713140815 000000-35秒insert into rede."temp_个人信息"--create table rede."temp_个人信息" asselect (rownum / 1000000) as "queueID", t.idfrom rede."个人信息" twhere 1 = 1and t.银行卡号 != '钱塘江上是谁家,江上女儿全胜花。'and rownum < 2000000;-- 更新基表 update rede."个人信息" tset t.银行卡号 = '钱塘江上是谁家,江上女儿全胜花。'where exists (select 1from rede."temp_个人信息" t1where t.id = t1.idand T1."queueID" = 0);-- 清空临时表|查询临时表execute immediate 'truncate TABLE rede."temp_个人信息"';--Select * FROM rede."temp_个人信息";ld_end := sysdate;print TO_CHAR(ld_end,'YYYYMMDDHH24MISS FF6') ||'-'|| TO_CHAR(ld_begin,'YYYYMMDDHH24MISS FF6')||'-'||round(to_number(ld_end - ld_begin)* 24 * 60 * 60) || '秒';end loop;end;
-
这篇关于达梦大表更新速度和更新粒度测试(单机环境测试)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!