MySQL以速度為目標
添加時間:2014-11-14 3:11:41
添加:
思海網絡
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由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系統下也能支持符號連接處理。
關鍵字:MySQL、服務器、數據庫
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解