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,包括:連接提示、查詢提示、表提示。