MySQL以速度為目標
--------------------------------------------------------------------------------
MySQL和PostgreSQL都是非常著名的數據庫開放源碼項目,而且都有取代商用數據庫系統的趨勢,但兩者有著不同的設計目標。一般而言,如果需要更快的速度,可以優先考慮MySQL,而如果需要一些新的特色,那可以選擇PostgreSQL。
目前MySQL由MySQL AB公司維護,其最新穩定版本為3.23,支持事務處理的3.23Max版也進入了Beta測試階段,而它的最新開發版本4.0已經進入了Alpha測試階段。它略顯不尋常的許可費用,很容易讓用戶對它印象深刻。它的價格隨平台和安裝方式的不同而改變,其Windows版本在任何情況下都不免費,而對任何Unix/Linux版本,如果用戶或系統管理員自己安裝是免費的,第三方安裝則必須支付許可費用。
MySQL是基於C/S體系結構的網絡數據庫管理系統。它的設計以速度為主要目標,可以快速處理多個用戶的查詢請求,在處理客戶端連接時的速度也非常快,很適合用做Web站點的後台數據庫。相對而言,PostgreSQL的執行速度比較慢,它對每個連接都生成一個子進程,而生成子進程、建立後台服務進程的步驟減慢了它的執行速度。MySQL的服務器功能很緊湊,各種復雜的功能處理(比如XML支持)完全被放到客戶端進行,這使得增加功能時不會犧牲數據庫服務器的速度和可靠性。而且它已被商業內存檢測程序證明不存在內存洩露,連續中斷和程序崩潰的現象也很罕見,在穩定性上比PostgreSQL要強一些。
在最初的設計階段,MySQL主要面向中等規模的數據庫,也就是說,數據庫的規模大約有幾千萬行,每個表大約100MB。隨著MySQL項目的發展,它的使用領域也逐漸擴展到TB規模的大型數據庫和小型的手持或嵌入式設備領域。但是在短期內,MySQL不會支持實時數據庫或大規模集群數據庫。雖然在其3.23版本中,它通過MyISAM表,可以使系統在理論上能夠支持8000PB的表。但由於操作系統的限制,在大部分Linux系統下,它僅能處理最大為2GB或4GB的表。在3.23版本中,還加入了支持大型服務器集群的復制、InnoDB的事務表處理器、Berkerley DB事務表處理器接口、全文本搜索、MyODBC 2.5接口、MyISAM表的自動檢查和修復、批量插入等新模塊。
InnoDB和BDB事務表處理器的引入使MySQL中使用這些方式存儲的數據表具有很好的事務處理能力。不過對於其他方式存儲的表,使用原子操作維護完整性和一致性通常會損失一些性能。在完整性非常重要時,可以使用LOCK TABLES進行表鎖定。從3.23.44開始,InnoDB表支持外碼限制檢查,不過它的使用,特別是誤用外碼可能會導致較嚴重的問題。
MySQL不支持嵌套查詢功能,給開發人員帶來很大不便。它只支持SQL92的一個子集,而不像PostgreSQL那樣支持SQL92的一個通用子集。所以對於邏輯比較復雜的查詢,往往要建立臨時表來保存中間信息,有時候這種方式會使一些查詢語句的表述很不直觀或者根本無法表示。
不過在MySQL 4.0系統中,又增加了一些新特性,比如支持fail-safe方式復制和聯機備份的工作方式,以適應關鍵任務和大負載運行的用戶。它還對大段文本采用新的全文索引,使用戶可以用自然語言描述進行檢索操作。此外,在4.0之前的版本中只能通過明文進行服務器和客戶端之間的連接,若要提供較強的安全性必須在服務器和客戶端之間架設防火牆;而4.0版本在客戶機和服務器之間支持安全通信方式,其MySQLd服務器守護進程可以使用安全套接字(SSL)和客戶機進行通信。另外它通過對MyISAM在表級加入符號連接,使得在Windows系統下也能支持符號連接處理。
(計算機世界報 第11期B24)
本篇文章來源於 52教程網 | http://www.520jcw.cn | 歡迎轉載 | 原文鏈接:http://www.520jcw.cn/html/database/MYSQL/200812/154004.html