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