DM8新特性及初次體驗

資料庫頻道發表於2019-01-29

DM8快要釋出了,最近拿到了DM8的新特性白皮書和最新測試版,下面開始我們的DM8之旅吧。

DM8十大新特性:

      1. 共享儲存叢集DSC增強

最多可以支援8個節點的共享儲存叢集,支援共享儲存叢集+資料守護,進一步提高系統可用性,提供可替代Oracle的兩地三中心解決方案。

2. 提供分散式檔案系統DDFS

DDFS(DM Distributed File System)是可供DM資料庫伺服器使用的底層分散式檔案系統,DDFS支援多副本資料冗餘容災,採用中心化副本控制協議(primary-secondary協議)和Quorum機制對副本進行管理,可快速進行主副本間的切換,能夠有效地處理系統中的各種故障和異常情況。

3. 支援分散式彈性計算叢集

當單個達夢資料庫系統在SQL執行過程中發現當前操作需要大量的記憶體和CPU資源,且當前區域網上有可利用的空閒DM資料庫計算資源時,就可以把當前的SQL操作拆分成多個任務和相應的資料分發到這些可以利用的達夢資料庫,並回收計算結果加以整合,從而實現複雜SQL的彈性計算。

4. 查詢最佳化器增強

支援多維統計資訊,當查詢中涉及的多個列互相併不獨立時,允許使用者指定針對多個列收集和計算統計資訊,可提升多列過濾、多列連線場景下的代價計算精準度,生成更優的執行計劃;相關子查詢、外連線等查詢最佳化引數根據應用場景自動調整,減少人工干預;複雜表示式的最佳化;語句塊中的SQL獨立HINT支援等。

5. AWR報表工具增強

DM8對AWR報表工具的內部構造策略進行了改造,大幅提升了AWR報表的生成效率。同時相對於DM7的AWR報表工具增加了多個統計表單,實現了對系統執行情況更加細緻的展現。

6. 安全功能增強

進一步增強強制訪問控制、儲存加密、資源限制、實時審計等安全功能。

7. JDBC介面增強

JDBC介面進行了重新設計實現,資源開銷更小,效能更高。

8. 高階功能擴充套件

擴充套件了對多級分割槽表的功能支援,新增對分割槽交換、分割槽重新命名、修改LIST分割槽範圍值、增加約束功能的支援;物化檢視支援ON COMMIT快速重新整理方式,支援巢狀物化檢視,提升了複雜物化檢視的重新整理效能;支援遞迴CTE表示式。

9. 管理工具改進

管理工具提供了全新的SQL助手提供SQL語法檢查和SQL輸入助手功能;SQL語法檢查功能對使用者輸入的SQL語句進行實時的語法檢查,定位錯誤的SQL語法。SQL輸入助手能夠對使用者輸入SQL進行實時的智慧提示。

10. 達夢資料庫管理服務平臺

提供了全新的基於Web開發的資料庫管理服務平臺(DEM), DEM不僅包含了桌面工具系統管理工具(Manager),資料遷移工具(DTS),效能監視工具(Monitor)的功能,還提供了叢集部署(Deploy)功能、監控功能和告警功能。使用者透過叢集部署功能可快速和簡單地在多臺主機上部署MPP叢集、DMDSC叢集和資料守護叢集。

 

DM8初步體驗:

DM8的安裝步驟與DM7保持了相同的操作體驗,而全新設計的圖示給我帶來了一些驚喜,給人煥然一新的感覺,有圖有真相:   

DM8新特性及初次體驗

DM8新特性及初次體驗

    共享儲存叢集、分散式檔案系統、彈性計算等高階特性環境有限,這次就不給大家分享了,下面給大家分享一些我在初次安裝使用中發現的細節性改進吧:

DM7的管理工具語法檢查依賴於伺服器,DM8這塊做了重大改進,不依賴於伺服器即可進行語法檢查。SQL輸入助手方面DM7也不是很精確,有時會有一些卡頓的情況出現,非常期待DM8的表現。

 

--開啟DM8管理工具,構造兩條有語法錯誤的SQL語句,看看效果。

DM8新特性及初次體驗

 

--斷開連線,新建一個視窗,構造兩條有語法錯誤的SQL語句,離線的情況下看看效果。

 

DM8新特性及初次體驗

 

--測試一下SQL助手輔助輸入的情況

 

DM8新特性及初次體驗

 

DM8新特性及初次體驗

DM8的SQL助手2.0果然很強大,可以提供離線的語法檢查,SQL輸入輔助功能自然流暢,幾可與sqldeveloper工具媲美。

DM8還有一個我非常期待的功能,我們在最佳化儲存過程效能的時候會碰到一個非常頭疼的問題:無法有效的確定儲存過程中某條SQL的執行計劃。DM8在儲存過程除錯功能中增加了檢視SQL執行計劃的功能,這是一大創新,下面我們來體驗一下吧。

--建立一個儲存過程,看看DM8支援多少動態檢視

create or REPLACE PROCEDURE p_explain()

as 

   cnt INT;

begin

   cnt=0;

   select COUNT(*) INTO cnt from SYSOBJECTS where SYSOBJECTS.NAME LIKE 'V$%';

   print cnt;

end;

   --除錯儲存過程,檢視select語句的執行計劃 

DM8新特性及初次體驗

 

 --噹噹噹當,期待已久的功能終於實現了!

 

DM8新特性及初次體驗

下面我們再來看看遞迴WITH吧,ITPUB上newkid等大神最喜歡用遞迴WITH來解複雜的SQL題目了,以後也可以在DM8上執行了。

--先來個簡單的

with T(code,name,parentCode,level) as

(

select '01' as Code,'武漢市' Name,'0' parentCode,1 level from dual union all

select '02' as Code,'北京市' Name,'0' parentCode,1 level from dual union all

select '0101' ,'洪山區','01',2 from dual union all

select '010101' ,'街道口','0101',3 from dual union all 

select '010102' ,'關山','0101',3 from dual union all

select '0102' ,'武昌區','01',2 from dual union all

select '0103' ,'江夏區','01',2 from dual union all

select '0201' ,'海淀區','02',2 from dual union all

select '020101' ,'魏公村','0201',3 from dual union all 

select '020102' ,'中關村','0201',3 from dual union all

select '0202' ,'東城區','02',2 from dual

)

,A(code,name,parentCode,level) as(

select Code,Name,parentCode,level from T where Code='01'

union all

select T.Code,T.Name,T.parentCode,t.level from T

inner join A on T.parentCode=A.Code

)

--遞迴查詢武漢資料

select * from A ;

 

DM8新特性及初次體驗

--再來一個newkid大神寫的質因子分解SQL

WITH t(c,n,m,r) AS (

SELECT 1,2,720,1 FROM DUAL

UNION ALL

SELECT c+1

      ,CASE WHEN MOD(m,n)>0 THEN n+1 ELSE n END

      ,CASE WHEN MOD(m,n)>0 THEN m ELSE m/n END

      ,MOD(m,n)

  FROM t

WHERE c<720 AND m>1

)

SELECT n FROM t WHERE r=0;

 

DM8新特性及初次體驗

 

篇幅有限,今天就分享這麼多了,下次有空再繼續深入!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31545814/viewspace-2565131/,如需轉載,請註明出處,否則將追究法律責任。

相關文章