在這篇文章中,我們選用MySQL 4.0.2-alpha與PostgreSQL 7.2進行比較,因為MySQL 4.0.2-alpha開始支援事務的概念,因此這樣的比較對於MySQL應該較為有利。我們這樣的比較不想僅僅成為一份效能測試報告,因為至少從我個人來看,對於一個資料庫,穩定性和速度並不能代表一切。對於一個成熟的資料庫,穩定性肯定會日益提供。而隨著硬體效能的飛速提高,速度也不再是什麼太大的問題。 一、前言
前一段時間,我曾經翻譯過一篇 將你的網站從MySQL改為PostgreSQL ,其實當初我更感興趣的是一個應用程式的後台資料庫從MySQL轉為PostgreSQL的具體操作,並沒有關心MySQL和PostgreSQL的優劣,沒想到反應出乎意料的大,因此我也就覺得有寫這篇文章的必要了。
在這篇文章中,我們選用MySQL 4.0.2-alpha與PostgreSQL 7.2進行比較,因為MySQL 4.0.2-alpha開始支援事務的概念,因此這樣的比較對於MySQL應該較為有利。
我們這樣的比較不想僅僅成為一份效能測試報告,因為至少從我個人來看,對於一個資料庫,穩定性和速度並不能代表一切。對於一個成熟的資料庫,穩定性肯定會日益提供。而隨著硬體效能的飛速提高,速度也不再是什麼太大的問題。
二、兩者的共同優勢
這兩個產品都屬於開放源碼的一員,效能和功能都在高速地提高和增強。MySQL AB的人們和PostgreSQL的開發人員們都在儘可能地把各自的資料庫改得越來越好,所以對於任何商務資料庫使用其中的任何一個都不能算是錯誤的選擇。
三、兩者不同的背景
MySQL的背後是一個成熟的商業公司,而PostgreSQL的背後是一個龐大的志願開發組。這使得MySQL的開發過程更為謹慎,而PostgreSQL的反應更為迅速。
這樣的兩種背景直接導致了各自固有的優點和缺點。
四、MySQL的主要優點
1、首先是速度,MySQL通常要比PostgreSQL快得多。MySQL自已也宣稱速度是他們追求的主要目標之一,基於這個原因,MySQL在以前的文檔中也曾經說過並不準備支援事務和觸發器。但是在最新的文檔中,我們看到MySQL 4.0.2-alpha已經開始支援事務,而且在MySQL的TODO中,對觸發器、約束這樣的註定會降低速度的功能也列入了議程。但是,我們仍然有理由相信,MySQL將有可能一直保持速度的優勢。
2、MySQL比PostgreSQL更流行,流行對於一個商業軟體來說,也是一個很重要的指標,流行意味著更多的使用者,意味著經受了更多的考驗,意味著更好的商業支援、意味著更多、更完善的文檔資料。
3、與PostgreSQL相比,MySQL更適宜在Windows環境下運行。MySQL作為一個本地的Windows應用程式運行(在NT/Win2000/WinXP下,是一個服務),而PostgreSQL是運行在Cygwin類比環境下。PostgreSQL在Windows下運行沒有MySQL穩定,應該是可以想象的。
4、MySQL使用了線程,而PostgreSQL使用的是進程。在不同線程之間的環境轉換和訪問公用的儲存地區顯然要比在不同的進程之間要快得多。
5、MySQL可以適應24/7運行。在絕大多數情況下,你不需要為MySQL運行任何清除程式。PostgreSQL目前仍不完全適應24/7運行,這是因為你必須每隔一段時間運行一次VACUUM。
6、MySQL在許可權系統上比PostgreSQL某些方面更為完善。PostgreSQL只支援對於每一個使用者在一個資料庫上或一個資料表上的INSERT、SELECT和UPDATE/DELETE的授權,而MySQL允許你定義一整套的不同的資料級、表級和列級的許可權。對於列級的許可權,PostgreSQL可以通過建立視圖,並確定視圖的許可權來彌補。MySQL還允許你指定基於主機的許可權,這對於目前的PostgreSQL是無法實現的,但是在很多時候,這是有用的。
7、由於MySQL 4.0.2-alpha開始支援事務的概念,因此事務對於MySQL不再僅僅成為劣勢。相反,因為MySQL保留無事務的表類型。這就為使用者提供了更多的選擇。
8、MySQL的MERGE表提供了一個獨特管理多個表的方法。
9、MySQL的myisampack可以對唯讀表進行壓縮,此後仍然可以直接存取該表中的行。