盖国强老师谈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. time used: 1.860(ms) clock tick:3364215.
  14. SQL>SELECT * FROM EYGLE;
  15. 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','eygle@eygle.com','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','eygle@eygle.com','13911812803',sysdate);
  10. end loop;
  11. end;
  12. 1 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   eygle@eygle.com 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. SQL*Plus: Release 10.2.0.4.0 - Production on 星期一 4月 19 11:56:32 2010
  3. 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. SQL> select name from v$database;
  4. NAME
  5. ---------
  6. EYGLE
  7. 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','eygle@eygle.com','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','eygle@eygle.com','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','eygle@eygle.com','13911812803',sysdate);
  10. end loop;
  11. end;
  12. 1 rows affected
  13. time used: 1764.746(ms) clock tick:3614125982.
  14. SQL>commit;
  15. commit;
  16. time used: 2.361(ms) clock tick:3931726.
  17. SQL>insert into eygle select * from eygle;
  18. insert into eygle select * from eygle;
  19. 100000 rows affected
  20. time used: 879.129(ms) clock tick:1800413670.
  21. SQL>commit;
  22. commit;
  23. 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','eygle@eygle.com','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. 200000 rows affected
  4. time used: 530.098(ms) clock tick:1025037644.
  5. SQL>rollback;
  6. rollback;
  7. time used: 591.067(ms) clock tick:1210472582.
  8. SQL>UPDATE EYGLE SET NAME='EYGLE@2010';
  9. UPDATE EYGLE SET NAME='EYGLE@2010';
  10. 200000 rows affected
  11. time used: 4297.675(ms) clock tick:3718914483.
  12. SQL>rollback;
  13. rollback;
  14. 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机制是其特有的关键特性,这些特性衍生出强大的关联数据库功能;而我们目前对达梦的两方面的实现还知之甚少,希望在后续的测试和研究中,能够对这两方面的技术加深理解,进一步领会和对比这两大数据库平台。

盖国强先生简介

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

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

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

分享名称:盖国强老师谈DM6.0中DML操作与性能体验
标题链接:http://www.shufengxianlan.com/qtweb/news23/483123.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联