盖国强老师谈DM6.0中DML操作与性能体验

对于国产数据库,一直持支持态度,在关键领域需要有我们自己的数据库产品。而本文作者盖国强老师,数据库频道也撰写过《专访盖国强:NoSQL很火 但还需市场检验》这样的文章。

拿到达梦国产数据库,我最感兴趣的并不是一些高端功能,更关注的是达梦在基本操作方面的性能,在数据库技术大会上,我曾经提到,其实对于Oracle数据库来说,其核心的功能从Oracle 7之后就很少变化,之后的版本,更多的是锦上不断添花的增强,而我们的国产数据库,如果能够扎扎实实做好基础工作,则未来是非常值得期待的。

以下是我的一些基础测试和对达梦的感觉。

1. 登陆与密码验证

安装达梦数据库之后,第一个遇到的是登陆问题,达梦数据库初始创立了3个用户,分别是 SYSDBA,SYSAUDITOR,SYSSSO,初始口令相同。这里我遇到的小小麻烦是,口令大小写问题,注意:达梦这三个缺省用户的口令是大写的,而且区分大小写。

  1. C:\dmdbms\bin>isql  
  2. isql V6.0.2.51-Build(2009.12.23)  
  3. SQL>login  
  4. server name:localhost  
  5. user name:sysdba  
  6. password:  
  7. port:12345  
  8. dm_login time used:80.306(ms) 

未经授权的用户

Login first.

 

这里的提示”未经授权的用户”让我困惑了好久,如果提示”用户名或口令错误”,可能更易于理解。多次尝试之后,我把口令改为大写,成功登入数据库:

 

  1. SQL>login  
  2. server name:localhost  
  3. user name:SYSDBA  
  4. password:  
  5. port:12345  
  6. dm_login time used:71.900(ms) 

2. DML操作的基本测试

在达梦中创建数据表以及进行基本的过程编写符合标准,完全可以和Oracle通用。在ISQL中,缺省的会显示每个操作步骤的时间,以毫秒显示。

以下创建一个基本的测试表,做出一点简单的测试:

  1. SQL>CREATE TABLE EYGLE (  
  2. 2   ID          NUMBER,  
  3. 3   NAME        VARCHAR2(30),  
  4. 4   MAIL        VARCHAR2(60),  
  5. 5   PHONE       VARCHAR2(60),  
  6. 6   LDATE       DATE);  
  7. CREATE TABLE EYGLE (  
  8. ID              NUMBER,  
  9. NAME    VARCHAR2(30),  
  10. MAIL    VARCHAR2(60),  
  11. PHONE   VARCHAR2(60),  
  12. LDATE   DATE);  
  13.  
  14. time used: 1.860(ms) clock tick:3364215.  
  15. SQL>SELECT * FROM EYGLE;  
  16. SELECT * FROM EYGLE; 

ID              NAME            MAIL            PHONE           LDATE

0 rows got

 

time used: 0.850(ms) clock tick:1727965.

 

通过一个Loop循环,插入10万条测试记录,耗时大约1841 ms:

 

  1. SQL>begin 
  2. 2   for i in 1 .. 100000 loop  
  3. 3   insert into eygle values(i,'eygle','[email protected]','13911812803',sysdate);  
  4. 4   end loop;  
  5. 5   end;  
  6. 6   /  
  7. begin 
  8. for i in 1 .. 100000 loop  
  9. insert into eygle values(i,'eygle','[email protected]','13911812803',sysdate);  
  10. end loop;  
  11. end;  
  12. rows affected  
  13. time used: 1841.828(ms) clock tick:3771986460.  
  14. SQL>select * from eygle where rownum <2;  
  15. select * from eygle where rownum <2; 

ID              NAME            MAIL            PHONE           LDATE

1       1       eygle   [email protected] 13911812803     2010-04-19

1 rows got

 

time used: 1.577(ms) clock tick:3217072.

 

回退这个批量的INSERT操作,需要大约325ms:

 

  1. SQL>rollback;  
  2. rollback;  
  3. time used: 325.134(ms) clock tick:665851724. 

对比一下在Oracle中的同样操作(Oracle选择初始安装,未调整,10.2.0.4版本):

  1. C:\Users\eygle>sqlplus "/ as sysdba"  
  2.  
  3. SQL*Plus: Release 10.2.0.4.0 - Production on 星期一 4月 19 11:56:32 2010  
  4. Copyright (c) 1982, 2007, Oracle.  All Rights Reserved. 

连接到:

  1. Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production  
  2. With the Partitioning, OLAP, Data Mining and Real Application Testing options  
  3.  
  4. SQL> select name from v$database;  
  5.  
  6. NAME 
  7. ---------  
  8. EYGLE  
  9.  
  10. SQL> create user eygle identified by eygle; 

用户已创建。

  1. SQL> grant connect,resource,dba to eygle; 

授权成功。

  1. SQL> connect eygle/eygle 

 

已连接。

 

  1. SQL> set timing on 
  2. SQL> CREATE TABLE EYGLE (  
  3.   2  ID         NUMBER,  
  4.   3  NAME       VARCHAR2(30),  
  5.   4  MAIL       VARCHAR2(60),  
  6.   5  PHONE      VARCHAR2(60),  
  7.   6  LDATE      DATE); 

表已创建。

在Oracle中,这个LOOP循环共耗时4130ms,回退这个事务则用了670ms,不考察内部原理及其他相关技术实现,达梦在这个基本操作上,是有不错的体现的:

 

  1. SQL> begin 
  2.   2  for i in 1 .. 100000 loop  
  3.   3  insert into eygle values(i,'eygle','[email protected]','13911812803',sysdate);  
  4.   4  end loop;  
  5.   5  end;  
  6.   6  / 

PL/SQL 过程已成功完成。

已用时间:  00: 00: 04.13

SQL> rollback;

 

回退已完成。

已用时间:  00: 00: 00.67

进一步的,在达梦数据库中再次创建这些数据并提交,同时进行进一步数据追加,追加数据用时879ms:

  1. SQL>begin 
  2. 2   for i in 1 .. 100000 loop  
  3. 3   insert into eygle values(i,'eygle','[email protected]','13911812803',sysdate);  
  4. 4   end loop;  
  5. 5   end;  
  6. 6   /  
  7. begin 
  8. for i in 1 .. 100000 loop  
  9. insert into eygle values(i,'eygle','[email protected]','13911812803',sysdate);  
  10. end loop;  
  11. end;  
  12. rows affected  
  13. time used: 1764.746(ms) clock tick:3614125982.  
  14. SQL>commit;  
  15. commit;  
  16.  
  17. time used: 2.361(ms) clock tick:3931726.  
  18.  
  19. SQL>insert into eygle select * from eygle;  
  20. insert into eygle select * from eygle;  
  21.  
  22. 100000 rows affected  
  23. time used: 879.129(ms) clock tick:1800413670.  
  24. SQL>commit;  
  25. commit;  
  26.  
  27. time used: 1.975(ms) clock tick:3076490. 

而在Oracle中,这个时间消耗是1960ms:

  1. SQL> begin 
  2.   2  for i in 1 .. 100000 loop  
  3.   3  insert into eygle values(i,'eygle','[email protected]','13911812803',sysdate);  
  4.   4  end loop;  
  5.   5  end;  
  6.   6  / 

PL/SQL 过程已成功完成。

已用时间:  00: 00: 03.26

SQL> commit;

 

提交完成。

已用时间:  00: 00: 00.00

  1. SQL> insert into eygle select * from eygle; 

已创建100000行。

已用时间:  00: 00: 01.96

SQL> commit;

 

提交完成。

已用时间:  00: 00: 00.00

最后测试一下删除与更新操作,批量删除20w数据用时530ms,更新单字段,用时4297ms:

  1. SQL>delete from eygle;  
  2. delete from eygle;  
  3.  
  4. 200000 rows affected  
  5. time used: 530.098(ms) clock tick:1025037644.  
  6. SQL>rollback;  
  7. rollback;  
  8.  
  9. time used: 591.067(ms) clock tick:1210472582.  
  10.  
  11. SQL>UPDATE EYGLE SET NAME='EYGLE@2010';  
  12. UPDATE EYGLE SET NAME='EYGLE@2010';  
  13.  
  14. 200000 rows affected  
  15. time used: 4297.675(ms) clock tick:3718914483.  
  16. SQL>rollback;  
  17. rollback;  
  18.  
  19. time used: 3810.759(ms) clock tick:744454156. 

对于Oracle来说,这两个数字分别是6080 ms 和 5890 ms:

  1. SQL> delete from eygle; 

已删除200000行。

已用时间:  00: 00: 06.08

  1. SQL> rollback

回退已完成。

已用时间:  00: 00: 02.66

  1. SQL>  
  2. SQL> UPDATE EYGLE SET NAME='EYGLE@2010'

已更新200000行。

已用时间:  00: 00: 05.89

  1. SQL> ROLLBACK

回退已完成。

已用时间:  00: 00: 05.68

通过简单的单用户DML操作测试,达梦数据库的性能是非常良好的。Oracle数据库的UNDO与REDO机制是其特有的关键特性,这些特性衍生出强大的关联数据库功能;而我们目前对达梦的两方面的实现还知之甚少,希望在后续的测试和研究中,能够对这两方面的技术加深理解,进一步领会和对比这两大数据库平台。

 

盖国强先生简介

[[10366]]

盖国强,+10 年Oracle数据库使用经验,+ 8 年Oracle DBA管理与实践经验。

曾任职于某国家大型企业,服务于烟草行业,开发过基于Oracle数据库的大型ERP系统;后任职于北京某电信增值服务商企业,提供电信级数据库的规划与运维支持。目前从事独立的数据库服务、数据库咨询,专注于为中国企业提供中立、专业的数据库服务。

实践经验丰富,长于数据库诊断、性能调整与SQL优化等。对于Oracle内部技术等具有深入研究。高级培训讲师,培训经验丰富。以上资料来自北京恩墨科技有限公司(www.eygle.com)。

【编辑推荐】

  1. Oracle数据库的DML语句功能介绍
  2. 清除Oracle中无用索引 改善DML性能
  3. Oracle数据库与DM的强制访问的不同之处
  4. 专访盖国强:NoSQL很火 但还需市场检验
  5. 关闭Oracle死锁进程的具体操作步骤

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/231024.html<

(0)
运维的头像运维
上一篇2025-04-19 12:24
下一篇 2025-04-19 12:25

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注