華為云計算 云知識 MySQL與PostgreSQL的對比
MySQL與PostgreSQL的對比

   

MySQL聲稱自己是最流行的開源數(shù)據(jù)庫。LAMP中的M指的就是MySQL。構(gòu)建在LAMP上的應用都會使用MySQL,如WordPress、Drupal等大多數(shù)php開源程序。

PostgreSQL標榜自己是世界上最先進的開源數(shù)據(jù)庫。PostgreSQL是完全由社區(qū)驅(qū)動的開源項目。它提供了單個完整功能的版本,而不像MySQL那樣提供了多個不同的社區(qū)版、商業(yè)版與企業(yè)版。PostgreSQL基于自由的BSD/MIT許可,組織可以使用、復制、修改和重新分發(fā)代碼,只需要提供一個版權(quán)聲明即可。

MySQL是C/C++混合開發(fā),PostgreSQL則是完全的C語言開發(fā),這是在技術(shù)方面的差異

1.穩(wěn)定性

PostgreSQL穩(wěn)定性非常強,InnoDB即使是在斷電這種場景下,PostgreSQL也是相當穩(wěn)定的,這個MySQL用戶應該是深有體會的,很多估計都經(jīng)歷過服務器級別的數(shù)據(jù)丟失。

2.儲引擎

MySQL是單存儲引擎,PostgreSQL是多存儲引擎,包括InnoDB、MyISAM等。

3.操作

刪除臨時表的時候,PostgreSQL語句沒有TEMP、TEMPORARY關(guān)鍵字,DROP TABLE通過數(shù)據(jù)庫連接的排列被刪除。MySQL支持TEMP、TEMPORARY關(guān)鍵字,DROP TABLE語句只允許刪除臨時表,要手動刪除。PostgreSQL支持CASCADE選擇刪除表的依賴對象,PostgreSQL的TRUNCATE TABLE支持功能更多。MySQL TRUNCATE TABLE不支持CASCADE食物安全,數(shù)據(jù)刪除之后就沒辦法回滾了。

4.數(shù)據(jù)類型

PostgreSQL支持多種高級數(shù)據(jù)類型,比如array,用戶也可以定義類型,MySQL只支持標準類型。PostgreSQL支持布爾型,支持IP地址數(shù)據(jù)類型,支持常量和函數(shù)調(diào)用。PostgreSQL支持JSON和其他NoSQL功能,本機支持XML,允許索引JSON數(shù)據(jù),MySQL支持JSON,不過不支持其他的NoSQL功能。PostgreSQL的對象統(tǒng)計功能也很強,這一點MySQL也有差距。

5.線程

PostgreSQL是多進程、MySQL是多線程。PostgreSQL支持大多數(shù)命令類型上觸發(fā)的觸發(fā)器。MySQL是異步復制,PostgreSQL支持同步、異步、半同步復制。PostgreSQL要求所有數(shù)據(jù)必須完全滿足需求,只要出一個錯誤整個數(shù)據(jù)入庫過程都要失敗,不過MySQL沒這樣的問題。