達夢7的試用 與SQLSERVER的簡單技術對比

達夢7的試用 與SQLSERVER的簡單技術對比

達夢數據庫公司推出了他們的數據庫服務管理平臺,能夠在該平臺使用達夢數據庫而無須安裝達夢7數據庫html

地址:http://online.dameng.com/mysql

說實話,第一眼看到仍是感到很高大上的,畢竟ORACLEMYSQLSQLSERVER都沒有推出數據庫試用的雲平臺sql

其實其餘數據庫也應該學習一下達夢,作一個平臺讓你們有機會學習自家的數據庫知識,雖然如今這個時代下載安裝包比較容易,不過提供一個平臺也是有好處的數據庫

達夢數據庫文檔下載:http://files.cnblogs.com/lyhabc/DM%E6%96%87%E6%A1%A3.rar緩存

 

 


試用體驗服務器

達夢數據庫使用的SQL語言是DM_SQL
網絡

 

達夢數據庫的存儲層次結構多線程

有空的朋友能夠看一下主頁右下角的三個文檔架構

 

 

具體的DM_SQL語法和命令你們能夠參考DM_SQL.pdfapp

 

 


試用開始

一、咱們先選擇一個實例,達夢是這樣的,一個實例下面只能掛一個數據庫,不像SQLSERVER和MYSQL能夠掛多個數據庫

咱們就選DM1這個實例,Windows的,有一些實例可能有人在用因此你會鏈接不上,當前會話數那裏就顯示了哪些實例是有在用的

並且這些實例下面有一些是已經有人建了數據庫在上面的了

二、選擇完實例以後,咱們就能夠建立數據庫,咱們打開新建查詢窗口

 

 腳本:

--建庫
CREATE TABLESPACE BOOKSHOP DATAFILE 'BOOKSHOP.DBF' SIZE 150

--建立模式和表
CREATE SCHEMA RESOURCES AUTHORIZATION SYSDBA


CREATE TABLE RESOURCES.COMPANYHOLIDAYS
(
  HOLIDAY DATE
)STORAGE(ON BOOKSHOP);

--插入數據
INSERT INTO RESOURCES.COMPANYHOLIDAYS(HOLIDAY)
VALUES('2007-7-21')

INSERT INTO RESOURCES.COMPANYHOLIDAYS(HOLIDAY)
VALUES('2008-8-26')

INSERT INTO RESOURCES.COMPANYHOLIDAYS(HOLIDAY)
VALUES('2010-10-2')


--查詢數據
select "HOLIDAY"
from "RESOURCES"."COMPANYHOLIDAYS";
View Code

TIPS:若是實在不知道語句怎麼寫,不用擔憂,左邊的管理器也有生成腳本的功能,只須要選中表而後按右鍵,彈出右鍵菜單

不過右下角沒有顯示您當前鏈接的是哪一個實例哪一個庫,不是太方便

 

 

查看錶屬性,能夠看到表是使用16K的塊大小

管理界面


這個管理平臺的基本功能

 

平臺編輯器的功能:語法自動補全、自動格式代碼、關鍵字自動高亮、調試、界面管理跟一個完整的數據庫管理工具差很少

缺點是右下角沒有顯示出當前在使用的實例和數據庫名

 

下面是部分功能截圖

新建了數據庫和模式以後,立刻就能夠在左邊的樹型菜單裏看到新建的模式

 

 

能夠看到當前達夢數據庫是運行Windows2003系統上的

達夢裏有比較多的系統工做線程,每一個系統工做線程各司其職

例如rapply_worker_thread線程,他是日誌重作線程,他在備機上進行日誌重作,跟SQLSERVER是同樣的,SQLSERVER裏鏡像、複製也有同樣功能的線程

 

管理界面就介紹到這裏了,繼續講下去好像偏離這篇文章的主體,你們有興趣能夠繼續深刻研究


技術對比

當你對某一個數據庫研究得很深刻的時候再學習另外一種數據庫就會發現,大部分原理都是相通的

例如技術實現原理,還有一些概念,只是換了名詞已而

例如:

一、SQLSERVER的用戶自定義函數,在MYSQL和達夢數據庫裏叫存儲函數

二、MYSQL裏面的事件(EVENT),就是SQLSERVER裏面的做業(JOB)

三、達夢數據庫裏的動態性能視圖,SQLSERVER裏叫動態管理視圖(DMV)

四、達夢數據庫裏的歸檔日誌文件,SQLSERVER裏的事務日誌文件

五、MYSQL和達夢數據庫裏的表空間相似於SQLSERVER裏的文件組

固然,上面的概念比較可能不太準確,若是有錯誤但願你們指正o(∩_∩)o 

 

技術對比一

數據庫備份

表空間備份

 

備份的時候,本人以爲大部分原理跟SQLSERVER都是同樣的,備份的時候,SQLSERVER會把活動日誌一同放進bak文件裏面

目的就是保證事務的一致性,達夢數據庫也是同樣,聯機備份的時候把歸檔日誌寫入備份文件

而達夢數據庫脫機備份的意思是:由於數據庫已經脫機,沒有數據變動了,當前數據庫裏的事務都是一致的,因此這時候就無需把日誌寫入到備份文件裏

表空間備份相似於SQLSERVER的文件/文件組備份,只備份數據庫的一部分,備份文件組的時候SQLSERVER也是須要把事務日誌寫入到BAK文件

保證事務一致性

注意:SQLSERVER沒有提供脫機備份功能

 

技術對比二

數據庫還原

SQLERVER在還原的時候也是隻支持脫機還原,要求不能有任何鏈接在鏈接當前要還原的數據庫,保證一致性

在達夢裏也有備份鏈原理,內部的原理應該跟SQLSERVER是同樣的,詳細參考:《您真的理解了SQLSERVER的日誌鏈了嗎?

在SQLSERVER裏也有相似達夢數據庫的並行還原技術,在還原數據庫的時候企業版的SQLSERVER也是使用了多線程技術進行還原

下面摘抄自《SQLSERVER2012實施與管理實戰指南》

企業版的SQLSERVERR會針對上述狀況作優化,主要在於下面兩點:
一、多線程並行處理重作和回滾
在企業版上,SQLSERVER會啓用多線程作重作和回滾操做。這樣作的一個好處,是縮短恢復整體時間,
讓數據庫可以儘早上線
若是在SQLSERVER的errorlog裏看到相似下面的信息,就說明SQL正在作一個比較大的恢復

 

技術對比三

數據守護

數據庫的數據保護,不論Oracle仍是SQLSERVER仍是MySQL,都有三重含義

第一重是Crash後從新起來,要確保數據不丟失

第二重是數據庫告訴應用事務寫入成功了,這個事務就得持久化,若是沒有告訴應用結果,則還能夠丟失;

第三重是主機失敗切換時(主從切換),如何表現得和沒有切換時的狀況同樣。

 

每種數據庫都有不一樣的數據守護技術(數據保護技術)

而每種數據庫的數據保護技術都是大同小異的

達夢數據庫的數據守護技術

鏈接服務名裏的雙IP配置相似於SQLSERVER的鏈接字符串裏指定鏡像夥伴,當發生故障轉移的時候,自動將程序的鏈接重定向

到備機

SQLSERVER裏面使用鏡像技術時,C#的鏈接字符串,Partner=myMirrorServerAddress指定備機地址,故障發生的時候.NET Data Provider

自動重定向鏈接到備機

Database mirroring    --數據庫鏡像 鏈接字符串 C# 
Data Source=myServerAddress;Failover Partner=myMirrorServerAddress;
Initial Catalog=myDataBase;Integrated Security=True;

 

SQLSERVER裏的鏡像技術原理,下面摘抄自《SQLSERVER2012實施與管理實戰指南》

數據庫鏡像的基本概念講得差很少了。那麼主體數據庫和鏡像數據庫是如何同步數據的呢?
SQL數據庫中任何的數據變化都會先記錄到事務日誌中,而後纔會真正更新數據頁面。
而事務日誌是先保存在該數據庫的 日誌緩存(log buffer)裏,而後將緩衝中的日誌固化到磁盤上LDF文件中。
在數據庫鏡像中,主體服務器在將主體數據庫的日誌從日誌緩存固化到磁盤的同時,
還會使用另外一個線程來將 日誌塊(log block)發送到鏡像服務器的端點。
當鏡像服務器經過端點接收到日誌塊後,他先將日誌塊放到鏡像數據庫的 日誌緩存裏,而後將緩存裏的日誌固化到磁盤上。
一旦 日誌塊被固化後,鏡像服務器會根據日誌來對鏡像數據庫執行「 重作(redo)」,最終更新數據頁面。
鏡像服務器重作日誌時, 鏡像數據庫實際就是在執行日誌的前滾操做
若是重作失敗,則鏡像服務器經過將數據庫至於suspended狀態來暫停會話。
DBA必須找到問題的緣由並解決問題才能繼續會話。
當主體服務器截斷或收縮數據庫事務日誌時,鏡像服務器也將在日誌的同一點收縮日誌。
 
能夠看到,數據庫鏡像其實就是經過發送日誌來保持夥伴之間的同步。
從SQL2008開始, 日誌塊在被主體服務器發送網絡以前會作壓縮處理。
這麼作的目的是爲了提高日誌發送和接收的效率,下降日誌塊傳輸對網絡鏈路和網絡設備所帶來的負載。
對應那些異常繁忙的生產系統,這項功能不但下降了因爲網絡不勝負荷的鏡像會話異常中斷,
也下降因爲網絡延遲致使的數據庫鏡像性能問題,可謂一箭雙鵰。
 

達夢數據庫的數據守護技術其實是對應於SQLSERVER 的Always On技術和鏡像技術

SQLSERVER 的Always On技術鏡像技術都是高可用技術,因爲每種數據庫對一些名詞概念都採用本身的叫法

例如SQLSERVER裏叫高可用,而MYSQL和ORACLE叫可用性,達夢裏面叫數據守護,叫法不一樣,實際上都是指同同樣東西

由於叫法的不一樣致使有一些ORACLE專家覺得SQLSERVER沒有可用性的方案和產品

ORACLE:RAC集羣Data guard 

MYSQL:MYSQL CLUSTER

SQLSERVER:Always On鏡像

 

有一些架構是share-disk,而有一些架構是share-nothing的,具體在這裏不展開來說了

有興趣的朋友能夠看一下宋沄劍寫的《數據庫集羣技術漫談

 

技術對比四

數據庫複製

數據庫複製不算是數據守護的技術,因此不歸到數據守護裏面

在SQLSERVER裏,有發佈數據庫、分發數據庫、訂閱數據庫之分

而達夢裏面主服務器就是發佈庫,複製服務器就是分發庫,從服務器就是訂閱庫

達夢數據庫的複製結構跟SQLSERVER差很少

 

技術對比五

上面都說了相同點,如今說一下不一樣點,可是因爲篇幅限制,我這裏只說達夢的數據庫數據頁面的結構是怎樣的

 

達夢數據庫的頁面有不一樣的大小,有4K、8K、16K、32K,實際上達夢數據庫將數據頁面叫數據塊

跟ORACLE同樣也是叫數據塊

達夢數據庫在配置文件裏設置數據塊的大小,重啓數據庫服務以後,達夢就會讀取配置文件新的配置信息(有點相似MYSQL)

在新建表的時候就會根據配置文件來建立數據塊

 

而表的數據類型的長度根據當前數據塊的大小的不一樣而不一樣

 

而在SQLSERVER裏面,是不能設置數據頁面的大小的,每一個數據頁面的大小都是8K


重頭戲:COUNT(*)統計結果行數

你們注意下劃線部分!!

SQLSERVER跟達夢是同樣的

USE [sss]
CREATE TABLE counttb(id INT NULL)

INSERT INTO [dbo].[counttb]
        ( [id] )
SELECT 1 UNION ALL 
SELECT NULL 

SELECT COUNT(1),COUNT(*),COUNT(id) FROM [dbo].[counttb]

 

本人以前也寫過一篇,至於哪一個觀點正確留給你們去思考了

SQLSERVER 裏SELECT COUNT(1) 和SELECT COUNT(*)哪一個性能好?


總結

雖然大部分原理同樣,可是語法跟數據庫的結構仍是有一些出入

因此當DBA從一種數據庫轉型到另外一種數據庫的時候仍是須要一段時間的學習

例如從SQLSERVER轉到MYSQL 或者ORACLE轉到SQLSERVER

 

本文經過技術對比,可使你們對達夢數據庫的技術含量有一個度,雖然沒有實際使用過,最起碼瞭解一下咱們國家的自主知識產權的產品仍是不錯的

 

實際上,達夢數據庫的基本功能:序列、全文索引、策略、表分區。。。

這些該有的功能都有了,你們能夠看一下文檔,比較一下與ORACLE、SQLSERVER、MYSQL的區別

基本上這些數據庫有的功能達夢都有

但願達夢這支國家隊可以愈來愈強大的,在數據庫方面使國家可以早日擺脫外國的數據庫大佬們的制約

 

若有不對的地方,歡迎你們拍磚o(∩_∩)o 

相關文章
相關標籤/搜索