Oracle ,My SQL 與SQL Server的區別

應用上的區別:

MySQL :Mysql是中小型數據庫。像access一樣的文件型數據庫,但比access強百倍,是真正多用戶多任務的數據庫系統,從Linux上移植過來的,安全性非常好,完全可以作爲大型數據庫使用,不過大部分操作是在dos下進行,雖然也有第三方開發的圖形界面但並不好用 Access是一種桌面數據庫,只適合數據量少的應用,在處理少量數據和單機訪問的數據庫時是很好的,效率也很高。但是它的同時訪問客戶端不能多於4個。access數據庫有一定的極限,如果數據達到100M左右,很容易造成服務器iis假死,或者消耗掉服務器的內存導致服務器崩潰。MySQL自有它的不足之處,如規模小、功能有限(MySQL Cluster的功能和效率都相對比較差)等,但是這絲毫也沒有減少它受歡迎的程度。對於一般的個人使用者和中小型企業來說,MySQL提供的功能已經綽綽有餘,而且由於MySQL是開放源碼軟件,因此可以大大降低總體擁有成本。
  目前Internet上流行的網站構架方式是LAMP(Linux+Apache+MySQL+PHP),即使用Linux作爲操作系統,Apache作爲Web服務器,MySQL作爲數據庫,PHP作爲服務器端腳本解釋器。由於這四個軟件都是遵循GPL的開放源碼軟件,因此使用這種方式不用花一分錢就可以建立起一個穩定、免費的網站系統。

SQL Server:一提到SQL Server,大家一般都只想到Microsoft SQL Server,而非Sybase SQL Server。SQL Server最初是由Microsoft, Sybase andAshton-Tate三家公司攔下的生意,是爲IBM(又出現了)公司的OS/2操作系統開發的。隨着OS/2項目的失敗,大家也分道揚鑣。 Microsoft自然轉向自己的win操作系統,作爲windows NT軟件方案的一部分。而Sybase則專注於Linux/Unix方向的數據庫開發。
MS SQL Server主要面向中小企業。其最大的優勢就是在於集成了MS公司的各類產品及資源,提供了強大的可視化界面、高度集成的管理開發工具,在快速構建商業智能(BI)方面頗有建樹。 MS SQL Server是MS公司在軟件集成方案中的重要一環,也爲WIN系統在企業級應用中的普及做出了很大貢獻。Oracle。

Oracle的應用,主要在傳統行業的數據化業務中,比如:銀行、金融這樣的對可用性、健壯性、安全性、實時性要求極高的業務;零售、物流這樣對海量數據存儲分析要求很高的業務。此外,高新制造業如芯片廠也基本都離不開Oracle;電商也有很多使用者,如京東(正在投奔Oracle)、阿里巴巴(計劃去Oracle化)。而且由於Oracle對複雜計算、統計分析的強大支持,在互聯網數據分析、數據挖掘方面的應用也越來越多。一個典型場景是這樣的:
某電信公司(非國內)下屬某分公司的數據中心,有4臺OracleSun的大型服務器用來安裝Solaris操作系統和Oracle並提供計算服務,3臺Sun Storage磁盤陣列來提供Oracle數據存儲,12臺IBM小型機,一臺OracleExadata服務器,一臺500T的磁帶機用來存儲歷史數據,San連接內網,使用Tuxedo中間件來保證擴展性和無損遷移。建立支持高併發的Oracle數據庫,通過OLTP系統用來對海量數據實時處理、操作,建立高運算量的Oracle數據倉庫,用OLAP系統用來分析營收數據及提供自動報表。總預算約750萬美金。

系統上的區別

MySQL。MySQL基本是生於互聯網,長於互聯網。其應用實例也大都集中於互聯網方向,MySQL的高併發存取能力並不比大型數據庫差,同時價格便宜,安裝使用簡便快捷,深受廣大互聯網公司的喜愛。並且由於MySQL的開源特性,針對一些對數據庫有特別要求的應用,可以通過修改代碼來實現定向優化,例如SNS、LBS等互聯網業務。一個典型的應用場景是:
某互聯網公司,成立之初,僅有PC數臺,通過LAMP架構迅速搭起網站框架。隨着業務擴張、市場擴大,迅速發展成爲6臺Dell小型機的中型網站。現在花了三年,終於成爲垂直領域的最大網站,計劃中的數據中心,擁有Dell機架式服務器40臺,總預算20萬美金。

SQL Server。SQL Server是基於服務器端的中型的數據庫,可以適合大容量數據的應用,在功能上管理上也要比Access要強得多。在處理海量數據的效率,後臺開發的靈活性,可擴展性等方面強大。因爲現在數據庫都使用標準的SQL語言對數據庫進行管理,所以如果是標準SQL語言,兩者基本上都可以通用的。SQL Server還有更多的擴展,可以用存儲過程,數據庫大小無極限限制。總結:ASSESS是單機版的功能性能上都一般windows生態系統的產品,好處壞處都很分明。好處就是,高度集成化,微軟也提供了整套的軟件方案,基本上一套win系統裝下來就齊活了。因此,不那麼缺錢,但很缺IT人才的中小企業,會偏愛 MS SQL Server 。例如,自建ERP系統、商業智能、垂直領域零售商、餐飲、事業單位等等。
 Oracle: 數據文件包括:控制文件、數據文件、重做日誌文件、參數文件、歸檔文件、密碼文件。這是根據文件功能行進行劃分,並且所有文件都是二進制編碼後的文件,對數據庫算法效率有極大的提高。由於Oracle文件管理的統一性,就可以對SQL執行過程中的解析和優化,指定統一的標準:
RBO(基於規則的優化器)、CBO(基於成本的優化器)
通過優化器的選擇,以及無敵的HINT規則,給與了SQL優化極大的自由,對CPU、內存、IO資源進行方方面面的優化。ORACLE功能最強大,Oracle是大型數據庫。
  1.真正的客戶機/服務器體系結構。 
  2.圖形化用戶界面,使系統管理和數據庫管理更加直觀、簡單。 
  3.豐富的編程接口工具,爲用戶進行程序設計提供了更大的選擇餘地。 
  4.SQL Server與Windows NT完全集成,利用了NT的許多功能,如發送和接受消息,管理登錄安全性等。SQL Server也可以很好地與Microsoft BackOffice產品集成。 
  5.具有很好的伸縮性,可跨越從運行Windows 95/98的膝上型電腦到運行Windows 2000的大型多處理器等多種平臺使用。 
  6.對Web技術的支持,使用戶能夠很容易地將數據庫中的數據發佈到Web頁面上。 
  7.SQL Server提供數據倉庫功能,這個功能只在Oracle和其他更昂貴的DBMS中才有。 
  SQL Server 2000與以前版本相比較,又具有以下新特性:
  1.支持XML(Extensive Markup Language,擴展標記語言) 
  2.強大的基於Web的分析 
  3.支持OLE DB和多種查詢 
  4.支持分佈式的分區視圖。

Oracle支持大併發,大訪問量,是OLTP最好的工具。

MySQL:最大的一個特色,就是自由選擇存儲引擎。每個表都是一個文件,都可以選擇合適的存儲引擎。常見的引擎有 InnoDB、 MyISAM、NDBCluster等。但由於這種開放插件式的存儲引擎,比如要求數據庫與引擎之間的松耦合關係。從而導致文件的一致性大大降低。在SQL執行優化方面,也就有着一些不可避免的瓶頸。在多表關聯、子查詢優化、統計函數等方面是軟肋,而且只支持極簡單的HINT。

SQL Server :數據架構基本是縱向劃分,分爲:Protocol Layer(協議層), Relational Engine(關係引擎), Storage Engine(存儲引擎), SQLOS。SQL執行過程就是逐層解析的過程,其中Relational Engine中的優化器,是基於成本的(CBO),其工作過程跟Oracle是非常相似的。在成本之上也是支持很豐富的HINT,包括:連接提示、查詢提示、表提示。

Oracle與Mysql操作上的一些區別
①主鍵
Mysql一般使用自動增長類型,在創建表時只要指定表的主鍵爲auto increment,插入記錄時,不需要再指定該記錄的主鍵值,Mysql將自動增長;Oracle沒有自動增長類型,主鍵一般使用的序列,插入記錄時將序列號的下一個值付給該字段即可;只是ORM框架是隻要是native主鍵生成策略即可。
②單引號的處理
MYSQL裏可以用雙引號包起字符串,ORACLE裏只可以用單引號包起字符串。在插入和修改字符串前必須做單引號的替換:把所有出現的一個單引號替換成兩個單引號。
③翻頁的SQL語句的處理
MYSQL處理翻頁的SQL語句比較簡單,用LIMIT 開始位置, 記錄個數;ORACLE處理翻頁的SQL語句就比較繁瑣了。每個結果集只有一個ROWNUM字段標明它的位置, 並且只能用ROWNUM<100, 不能用ROWNUM>80
④ 長字符串的處理
長字符串的處理ORACLE也有它特殊的地方。INSERT和UPDATE時最大可操作的字符串長度小於等於4000個單字節, 如果要插入更長的字符串, 請考慮字段用CLOB類型,方法借用ORACLE裏自帶的DBMS_LOB程序包。插入修改記錄前一定要做進行非空和長度判斷,不能爲空的字段值和超出長度字段值都應該提出警告,返回上次操作。
⑤空字符的處理
MYSQL的非空字段也有空的內容,ORACLE裏定義了非空字段就不容許有空的內容。按MYSQL的NOT NULL來定義ORACLE表結構, 導數據的時候會產生錯誤。因此導數據時要對空字符進行判斷,如果爲NULL或空字符,需要把它改成一個空格的字符串。
⑥字符串的模糊比較
MYSQL裏用字段名 like '%字符串%',ORACLE裏也可以用字段名 like '%字符串%' 但這種方法不能使用索引, 速度不快。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章