自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

蓋國強老師談DM6.0中DML操作與性能體驗

數(shù)據(jù)庫 其他數(shù)據(jù)庫
本文由Oracle ACE蓋國強老師撰寫,主要是對于國產數(shù)據(jù)庫DM6.0中DML操作和性能體驗??梢哉f國產數(shù)據(jù)庫在某些領域還是需要發(fā)展起來的。

對于國產數(shù)據(jù)庫,51CTO一直持支持態(tài)度,在關鍵領域需要有我們自己的數(shù)據(jù)庫產品。而本文作者蓋國強老師,51CTO數(shù)據(jù)庫頻道也撰寫過《51CTO專訪蓋國強:NoSQL很火 但還需市場檢驗》這樣的文章。

拿到達夢國產數(shù)據(jù)庫,我最感興趣的并不是一些高端功能,更關注的是達夢在基本操作方面的性能,在數(shù)據(jù)庫技術大會上,我曾經提到,其實對于Oracle數(shù)據(jù)庫來說,其核心的功能從Oracle 7之后就很少變化,之后的版本,更多的是錦上不斷添花的增強,而我們的國產數(shù)據(jù)庫,如果能夠扎扎實實做好基礎工作,則未來是非常值得期待的。

以下是我的一些基礎測試和對達夢的感覺。

1. 登陸與密碼驗證

安裝達夢數(shù)據(jù)庫之后,第一個遇到的是登陸問題,達夢數(shù)據(jù)庫初始創(chuàng)立了3個用戶,分別是 SYSDBA,SYSAUDITOR,SYSSSO,初始口令相同。這里我遇到的小小麻煩是,口令大小寫問題,注意:達夢這三個缺省用戶的口令是大寫的,而且區(qū)分大小寫。

  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.

 

這里的提示"未經授權的用戶"讓我困惑了好久,如果提示"用戶名或口令錯誤",可能更易于理解。多次嘗試之后,我把口令改為大寫,成功登入數(shù)據(jù)庫:

 

  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操作的基本測試

在達夢中創(chuàng)建數(shù)據(jù)表以及進行基本的過程編寫符合標準,完全可以和Oracle通用。在ISQL中,缺省的會顯示每個操作步驟的時間,以毫秒顯示。

以下創(chuàng)建一個基本的測試表,做出一點簡單的測試:

  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循環(huán),插入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. 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.  
  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; 

用戶已創(chuàng)建。

  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); 

表已創(chuàng)建。

在Oracle中,這個LOOP循環(huán)共耗時4130ms,回退這個事務則用了670ms,不考察內部原理及其他相關技術實現(xiàn),達夢在這個基本操作上,是有不錯的體現(xiàn)的:

 

  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

進一步的,在達夢數(shù)據(jù)庫中再次創(chuàng)建這些數(shù)據(jù)并提交,同時進行進一步數(shù)據(jù)追加,追加數(shù)據(jù)用時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. 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','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; 

已創(chuàng)建100000行。

已用時間:  00: 00: 01.96

SQL> commit;

 

提交完成。

已用時間:  00: 00: 00.00

最后測試一下刪除與更新操作,批量刪除20w數(shù)據(jù)用時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來說,這兩個數(shù)字分別是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操作測試,達夢數(shù)據(jù)庫的性能是非常良好的。Oracle數(shù)據(jù)庫的UNDO與REDO機制是其特有的關鍵特性,這些特性衍生出強大的關聯(lián)數(shù)據(jù)庫功能;而我們目前對達夢的兩方面的實現(xiàn)還知之甚少,希望在后續(xù)的測試和研究中,能夠對這兩方面的技術加深理解,進一步領會和對比這兩大數(shù)據(jù)庫平臺。

 

蓋國強先生簡介

[[10366]]

蓋國強,+10 年Oracle數(shù)據(jù)庫使用經驗,+ 8 年Oracle DBA管理與實踐經驗。

曾任職于某國家大型企業(yè),服務于煙草行業(yè),開發(fā)過基于Oracle數(shù)據(jù)庫的大型ERP系統(tǒng);后任職于北京某電信增值服務商企業(yè),提供電信級數(shù)據(jù)庫的規(guī)劃與運維支持。目前從事獨立的數(shù)據(jù)庫服務、數(shù)據(jù)庫咨詢,專注于為中國企業(yè)提供中立、專業(yè)的數(shù)據(jù)庫服務。

實踐經驗豐富,長于數(shù)據(jù)庫診斷、性能調整與SQL優(yōu)化等。對于Oracle內部技術等具有深入研究。高級培訓講師,培訓經驗豐富。以上資料來自北京恩墨科技有限公司(www.eygle.com)。

【編輯推薦】

  1. Oracle數(shù)據(jù)庫的DML語句功能介紹
  2. 清除Oracle中無用索引 改善DML性能
  3. Oracle數(shù)據(jù)庫與DM的強制訪問的不同之處
  4. 51CTO專訪蓋國強:NoSQL很火 但還需市場檢驗
  5. 關閉Oracle死鎖進程的具體操作步驟
責任編輯:彭凡 來源: ITPUB
相關推薦

2013-10-30 16:15:03

2013年度IT博客大蓋國強

2010-04-02 22:02:19

蓋國強NoSQL

2011-04-25 13:56:09

iPad2聰明蓋兒

2015-04-15 10:38:14

NullObjectC#6.0改進

2009-09-18 14:09:07

2011-06-14 10:31:06

用戶體驗

2011-07-20 09:50:18

2011-06-09 17:18:09

2024-12-13 08:25:59

DML操作SQL

2011-03-03 14:57:00

手機交互設計產品管理信息架構

2021-01-18 17:46:05

釘釘用戶體驗評測

2009-05-05 14:08:52

EMC存儲虛擬化

2010-04-27 13:06:11

Qomo 6.0

2009-08-17 09:30:28

.NET 4.0

2023-12-13 11:26:15

Linuxbeta 版本

2012-02-13 14:33:53

筆記本評測

2011-11-10 16:04:19

筆記本評測

2015-04-24 13:54:42

平安WiFi

2013-08-19 09:44:59

Android設計指導Android Des

2009-10-09 13:42:56

Spring DataSpring DM
點贊
收藏

51CTO技術棧公眾號