1. 程式人生 > >關係型資料庫MySQL和SQL Server、Oracle的區別

關係型資料庫MySQL和SQL Server、Oracle的區別

MySQL

不支援事務處理、沒有檢視、儲存過程和觸發器(trigger),沒有資料庫端的使用者自定義函式,不能使用標準SQL語法。

SQL Server

它已廣泛應用於金融、保險、電力、行政管理等與資料庫有關的行業。由於其易操作性及友好的介面。它一般是和同是微軟產品的.net平臺一起搭配使用。

Oracle

能在所有主流平臺(VMS、DOS、UNIX、WINDOWS)上執行,提供高可用性和高伸縮性的簇的解決方案,擴充套件Windows NT的能力。Oracle良好的相容性、可移植性、可連線性和高生產率是 Oracle RDBMS具有良好的開放性。Oracle價格是比較昂貴的。OLTP(On-Line Transaction Processing聯機事務處理系統)的最好工具。

 

Oracle:客戶端和命令視窗,都是由使用者決定內容-> conn user_name/password;

MySQL:客戶端和命令視窗,都是由資料庫決定內容-> use datebase;

  Oracle SQL Server MySQL
  一庫多使用者 中小企業 多庫多使用者
  大型資料庫(大併發,大訪問量) 高度整合化,中小型資料庫 中小型資料庫
收費 收費高 收費 開源
字串拼接 || + concat()
空值處理數 Nvl() isnull() ifnull()
獲取系統時間 sysdate getdate() now()
日期格式化 to_char(sysdate,'yyyymmdd') convert(varchar(8),getdate(),112) date_format(xcs_received_date,'%Y%m%d')
主鍵自增長 使用序列自動增長 create table tb(id int identity(1,1) primary key )  create table tb(id int auto increment primary key )

大型資料庫的特點

海量資料、高吞吐量;複雜邏輯、高計算量,以及高可用性

lamp(Web應用軟體組合)

Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一組常用來搭建動態網站或者伺服器的開源軟體,本身都是各自獨立的程式,但是因為常被放在一起使用,擁有了越來越高的相容度,共同組成了一個強大的Web應用程式平臺。

用輕量級的Web 伺服器(例如nginx,HTTP和反向代理伺服器)高效,對於靜態檔案的響應能力遠高於Apache伺服器

 

  1. Oracle: 資料檔案包括:控制檔案、資料檔案、重做日誌檔案、引數檔案、歸檔檔案、密碼檔案。這是根據檔案功能行進行劃分,並且所有檔案都是二進位制編碼後的檔案,對資料庫演算法效率有極大的提高。由於Oracle檔案管理的統一性,就可以對SQL執行過程中的解析和優化,指定統一的標準:
    RBO(基於規則的優化器)、CBO(基於成本的優化器)
    通過優化器的選擇,以及無敵的HINT規則,給與了SQL優化極大的自由,對CPU、記憶體、IO資源進行方方面面的優化。
  2. MySQL:最大的一個特色,就是自由選擇儲存引擎。每個表都是一個檔案,都可以選擇合適的儲存引擎。常見的引擎有 InnoDB、 MyISAM、 NDBCluster等。但由於這種開放外掛式的儲存引擎,比如要求資料庫與引擎之間的鬆耦合關係。從而導致檔案的一致性大大降低。在SQL執行優化方面,也就有著一些不可避免的瓶頸。在多表關聯、子查詢優化、統計函式等方面是軟肋,而且只支援極簡單的HINT。
  3. SQL Server :資料架構基本是縱向劃分,分為:Protocol Layer(協議層), Relational Engine(關係引擎), Storage Engine(儲存引擎), SQLOS。SQL執行過程就是逐層解析的過程,其中Relational Engine中的優化器,是基於成本的(CBO),其工作過程跟Oracle是非常相似的。在成本之上也是支援很豐富的HINT,包括:連線提示、查詢提示、表提示。