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表支持外碼限制檢查,不過它的使用,特別是誤用外碼可能會導致較嚴重的問題。