日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL 和 PostgreSQL 对比

發布時間:2025/3/15 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL 和 PostgreSQL 对比 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

?????? 最近打算研究下幾個開源的數據庫,但是主要精力還是研究Oracle RDBMS MySQL PostgreSQL 是開源中用的最多的2個。 從網上搜了點資料。 整理如下。 這些資料也是以前的資料, 現在肯定是有變動。 所以這些內容,僅供參考。

?

一、兩者的共同優勢

  這兩個產品都屬于開放源碼的一員,性能和功能都在高速地提高和增強MySQL AB的人們和PostgreSQL的開發者們都在盡可能地把各自的數據庫改得越來越好,所以對于任何商業數據庫使用其中的任何一個都不能算是錯誤的選擇。
  
二、兩者不同的背景

  MySQL的背后是一個成熟的商業公司,而PostgreSQL的背后是一個龐大的志愿開發組。這使得MySQL的開發過程更為慎重,而PostgreSQL的反應更為迅速。
  這樣的兩種背景直接導致了各自固有的優點和缺點。
  
三、MySQL的主要優點
  1、首先是速度,MySQL通常要比PostgreSQL快得多。MySQL自已也宣稱速度是他們追求的主要目標之一,基于這個原因,MySQL在以前的文檔中也曾經說過并不準備支持事務和觸發器。但是在最新的文檔中,我們看到MySQL 4.0.2-alpha已經開始支持事務,而且在MySQLTODO中,對觸發器、約束這樣的注定會降低速度的功能也列入了日程。但是,我們仍然有理由相信,MySQL將有可能一直保持速度的優勢。


  2MySQLPostgreSQL更流行,流行對于一個商業軟件來說,也是一個很重要的指標,流行意味著更多的用戶,意味著經受了更多的考驗,意味著更好的商業支持、意味著更多、更完善的文檔資料。


  3、與PostgreSQL相比,MySQL更適宜在Windows環境下運行。MySQL作為一個本地的Windows應用程序運行(NT/Win2000/WinXP下,是一個服務),而PostgreSQL是運行在Cygwin模擬環境下。PostgreSQLWindows下運行沒有MySQL穩定,應該是可以想象的。


  4MySQL使用了線程,而PostgreSQL使用的是進程。在不同線程之間的環境轉換和訪問公用的存儲區域顯然要比在不同的進程之間要快得多。


  5MySQL可以適應24/7運行。在絕大多數情況下,你不需要為MySQL運行任何清除程序。PostgreSQL目前仍不完全適應24/7運行,這是因為你必須每隔一段時間運行一次VACUUM


  6MySQL在權限系統上比PostgreSQL某些方面更為完善。PostgreSQL只支持對于每一個用戶在一個數據庫上或一個數據表上的INSERTSELECTUPDATE/DELETE的授權,而MySQL允許你定義一整套的不同的數據級、表級和列級的權限。對于列級的權限,PostgreSQL可以通過建立視圖,并確定視圖的權限來彌補。MySQL還允許你指定基于主機的權限,這對于目前的PostgreSQL是無法實現的,但是在很多時候,這是有用的。


  7、由于MySQL 4.0.2-alpha開始支持事務的概念,因此事務對于MySQL不再僅僅成為劣勢。相反,因為MySQL保留無事務的表類型。這就為用戶提供了更多的選擇。


  8MySQLMERGE表提供了一個獨特管理多個表的方法。


  9MySQLmyisampack可以對只讀表進行壓縮,此后仍然可以直接訪問該表中的行。
  

四、PostgreSQL的主要優點:
  1、對事務的支持與MySQL相比,經歷了更為徹底的測試。對于一個嚴肅的商業應用來說,事務的支持是不可或缺的。


  2MySQL對于無事務的MyISAM表。采用表鎖定,一個長時間運行的查詢很可能會長時間地阻礙對表的更新。PostgreSQL不存在這樣的問題


  3PostgreSQL支持存儲過程,而目前MySQL不支持,對于一個嚴肅的商業應用來說,作為數據庫本身,有眾多的商業邏輯的存在,此時使用存儲過程可以在較少地增加數據庫服務器的負擔的前提下,對這樣的商業邏輯進行封裝,并可以利用數據庫服務器本身的內在機制對存儲過程的執行進行優化。此外存儲過程的存在也避免了在網絡上大量的原始的SQL語句的傳輸,這樣的優勢是顯而易見的。


  4、對視圖的支持,視圖的存在同樣可以最大限度地利用數據庫服務器內在的優化機制。而且對于視圖權限的合理使用,事實上可以提供行級別的權限,這是MySQL的權限系統所無法實現的。


  5、對觸發器的支持,觸發器的存在不可避免的會影響數據庫運行的效率,但是與此同時,觸發器的存在也有利于對商業邏輯的封裝,可以減少應用程序中對同一商業邏輯的重復控制。合理地使用觸發器也有利于保證數據的完整性。


  6、對約束的支持。約束的作用更多地表現在對數據完整性的保證上,合理地使用約束,也可以減少編程的工作量。


  7、對子查詢的支持。雖然在很多情況下在SQL語句中使用子查詢效率低下,而且絕大多數情況下可以使用帶條件的多表連接來替代子查詢,但是子查詢的存在在很多時候仍然不可避免。而且使用子查詢的SQL語句與使用帶條件的多表連接相比具有更高的程序可讀性。


  8、支持R-trees這樣可擴展的索引類型,可以更方便地處理一些特殊數據。


  9PostgreSQL可以更方便地使用UDF(用戶定義函數)進行擴展。
  
五、MySQLPostgreSQL 選擇
  除了MySQLPostgreSQL外,還有OracleSybaseInformix等數據庫的選擇。如何確定只在MySQLPostgreSQL中進行選擇,可以參考:


  1、如果你的應用對數據的完整性和嚴肅性要求不高,但是追求處理的高速度。例如是一個論壇和社區,你應該使用MySQL
  2、你的應用是一個嚴肅的商業應用,對數據完整性要求很高。而且你希望對一些商業數據邏輯進行很好的封裝,例如是一個網上銀行,你應該使用PostgreSQL
  3、你的應用處理的是地理數據,由于R-TREES的存在,你應該使用PostgreSQL

?

?

?

?

整理自網絡

-------------------------------------------------------------------------------------------------------

Blog http://blog.csdn.net/tianlesoftware

Email: dvd.dba@gmail.com

DBA1 群:62697716(滿);?? DBA2 群:62697977(滿)?? DBA3 群:62697850(滿)??

DBA 超級群:63306533(滿);? DBA4 群: 83829929? DBA5群: 142216823???

聊天 群:40132017?? 聊天2群:69087192

--加群需要在備注說明Oracle表空間和數據文件的關系,否則拒絕申請

轉載于:https://www.cnblogs.com/tianlesoftware/archive/2011/04/29/3609684.html

總結

以上是生活随笔為你收集整理的MySQL 和 PostgreSQL 对比的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。