国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

postgresql和mysql有哪些區(qū)別

2024-07-24 12:33:11
字體:
供稿:網(wǎng)友
  這篇“postgresql和mysql有哪些區(qū)別”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“postgresql和mysql有哪些區(qū)別”文章吧。
 
  區(qū)別:1、MySQL通過執(zhí)行命令啟動實例,而PG通過執(zhí)行進程來啟動;2、PG支持物化視圖、而MySQL不支持物化視圖;3、MySQL不支持拓展性,而PG是高度可擴展的;4、PG存儲過程的功能支持要比MySQL好,具備本地緩存執(zhí)行計劃的能力。
 
  本教程操作環(huán)境:windows7系統(tǒng)、mysql8版本、Dell G3電腦。
 
  MySQL
 
  MySQL相對來說比較年輕,首度出現(xiàn)在1994年。它聲稱自己是最流行的開源數(shù)據(jù)庫。MySQL就是LAMP(用于Web開發(fā)的軟件包,包括 Linux、Apache及Perl/PHP/Python)中的M。構(gòu)建在LAMP棧之上的大多數(shù)應(yīng)用都會使用MySQL,包括那些知名的應(yīng)用,如 WordPress、Drupal、Zend及phpBB等。
 
  一開始,MySQL的設(shè)計目標是成為一個快速的Web服務(wù)器后端,使用快速的索引序列訪問方法(ISAM),不支持ACID。經(jīng)過早期快速的發(fā)展之 后,MySQL開始支持更多的存儲引擎,并通過InnoDB引擎實現(xiàn)了ACID。MySQL還支持其他存儲引擎,提供了臨時表的功能(使用MEMORY存 儲引擎),通過MyISAM引擎實現(xiàn)了高速讀的數(shù)據(jù)庫,此外還有其他的核心存儲引擎與第三方引擎。
 
  MySQL的文檔非常豐富,有很多質(zhì)量不錯的免費參考手冊、圖書與在線文檔,還有來自于Oracle和第三方廠商的培訓與支持。
 
  MySQL近幾年經(jīng)歷了所有權(quán)的變更和一些頗具戲劇性的事件。它最初是由MySQL AB開發(fā)的,然后在2008年以10億美金的價格賣給了Sun公司,Sun公司又在2010年被Oracle收購。Oracle支持MySQL的多個版 本:Standard、Enterprise、Classic、Cluster、Embedded與Community。其中有一些是免費下載的,另外一 些則是收費的。其核心代碼基于GPL許可,對于那些不想使用GPL許可的開發(fā)者與廠商來說還有商業(yè)許可可供使用。
 
  現(xiàn)在,基于最初的MySQL代碼還有更多的數(shù)據(jù)庫可供選擇,因為幾個核心的MySQL開發(fā)者已經(jīng)發(fā)布了MySQL分支。最初的MySQL創(chuàng)建者之一 Michael “Monty” Widenius貌似后悔將MySQL賣給了Sun公司,于是又開發(fā)了他自己的MySQL分支MariaDB,它是免費的,基于GPL許可。知名的 MySQL開發(fā)者Brian Aker所創(chuàng)建的分支Drizzle對其進行了大量的改寫,特別針對多CPU、云、網(wǎng)絡(luò)應(yīng)用與高并發(fā)進行了優(yōu)化。
 
  PostgreSQL
 
  PostgreSQL(簡稱PG)標榜自己是世界上最先進的開源數(shù)據(jù)庫。PostgreSQL的一些粉絲說它能與Oracle相媲美,而且沒有那么昂貴的價格和傲慢的客服。它擁有很長的歷史,最初是1985年在加利福尼亞大學伯克利分校開發(fā)的,作為Ingres數(shù)據(jù)庫的后繼。
 
  PostgreSQL是完全由社區(qū)驅(qū)動的開源項目,由全世界超過1000名貢獻者所維護。它提供了單個完整功能的版本,而不像MySQL那樣提供了 多個不同的社區(qū)版、商業(yè)版與企業(yè)版。PostgreSQL基于自由的BSD/MIT許可,組織可以使用、復制、修改和重新分發(fā)代碼,只需要提供一個版權(quán)聲明即可。
 
  可靠性是PostgreSQL的最高優(yōu)先級。它以堅如磐石的品質(zhì)和良好的工程化而聞名,支持高事務(wù)、任務(wù)關(guān)鍵型應(yīng)用。PostgreSQL的文檔非 常精良,提供了大量免費的在線手冊,還針對舊版本提供了歸檔的參考手冊。PostgreSQL的社區(qū)支持是非常棒的,還有來自于獨立廠商的商業(yè)支持。
 
  數(shù)據(jù)一致性與完整性也是PostgreSQL的高優(yōu)先級特性。PostgreSQL是完全支持ACID特性的,它對于數(shù)據(jù)庫訪問提供了強大的安全性 保證,充分利用了企業(yè)安全工具,如Kerberos與OpenSSL等。你可以定義自己的檢查,根據(jù)自己的業(yè)務(wù)規(guī)則確保數(shù)據(jù)質(zhì)量。
 
  在眾多的管理特性 中,point-in-time recovery(PITR)是非常棒的特性,這是個靈活的高可用特性,提供了諸如針對失敗恢復創(chuàng)建熱備份以及快照與恢復的能力。但這并不是 PostgreSQL的全部,項目還提供了幾個方法來管理PostgreSQL以實現(xiàn)高可用、負載均衡與復制等,這樣你就可以使用適合自己特定需求的功能了。
 
  postgresql和mysql的區(qū)別
 
  特性 MySQL PostgreSQL
 
  實例 通過執(zhí)行 MySQL 命令(mysqld)啟動實例。一個實例可以管理一個或多個數(shù)據(jù)庫。一臺服務(wù)器可以運行多個 mysqld 實例。一個實例管理器可以監(jiān)視 mysqld 的各個實例。
 
  通過執(zhí)行 Postmaster 進程(pg_ctl)啟動實例。一個實例可以管理一個或多個數(shù)據(jù)庫,這些數(shù)據(jù)庫組成一個集群。集群是磁盤上的一個區(qū)域,這個區(qū)域在安裝時初始化并由一個目錄組成,所有數(shù)據(jù)都存儲在這個目錄中。使用 initdb 創(chuàng)建第一個數(shù)據(jù)庫。一臺機器上可以啟動多個實例。
 
  數(shù)據(jù)庫 數(shù)據(jù)庫是命名的對象集合,是與實例中的其他數(shù)據(jù)庫分離的實體。一個 MySQL 實例中的所有數(shù)據(jù)庫共享同一個系統(tǒng)編目。 數(shù)據(jù)庫是命名的對象集合,每個數(shù)據(jù)庫是與其他數(shù)據(jù)庫分離的實體。每個數(shù)據(jù)庫有自己的系統(tǒng)編目,但是所有數(shù)據(jù)庫共享 pg_databases。
 
  數(shù)據(jù)緩沖區(qū) 通過 innodb_buffer_pool_size 配置參數(shù)設(shè)置數(shù)據(jù)緩沖區(qū)。這個參數(shù)是內(nèi)存緩沖區(qū)的字節(jié)數(shù),InnoDB 使用這個緩沖區(qū)來緩存表的數(shù)據(jù)和索引。在專用的數(shù)據(jù)庫服務(wù)器上,這個參數(shù)最高可以設(shè)置為機器物理內(nèi)存量的 80%。 Shared_buffers 緩存。在默認情況下分配 64 個緩沖區(qū)。默認的塊大小是 8K。可以通過設(shè)置 postgresql.conf 文件中的 shared_buffers 參數(shù)來更新緩沖區(qū)緩存。
 
  數(shù)據(jù)庫連接 客戶機使用 CONNECT 或 USE 語句連接數(shù)據(jù)庫,這時要指定數(shù)據(jù)庫名,還可以指定用戶 id 和密碼。使用角色管理數(shù)據(jù)庫中的用戶和用戶組。 客戶機使用 connect 語句連接數(shù)據(jù)庫,這時要指定數(shù)據(jù)庫名,還可以指定用戶 id 和密碼。使用角色管理數(shù)據(jù)庫中的用戶和用戶組。
 
  身份驗證 MySQL 在數(shù)據(jù)庫級管理身份驗證。 基本只支持密碼認證。 PostgreSQL 支持豐富的認證方法:信任認證、口令認證、Kerberos 認證、基于 Ident 的認證、LDAP 認證、PAM 認證
 
  加密 可以在表級指定密碼來對數(shù)據(jù)進行加密。還可以使用 AES_ENCRYPT 和 AES_DECRYPT 函數(shù)對列數(shù)據(jù)進行加密和解密。可以通過 SSL 連接實現(xiàn)網(wǎng)絡(luò)加密。 可以使用 pgcrypto 庫中的函數(shù)對列進行加密/解密。可以通過 SSL 連接實現(xiàn)網(wǎng)絡(luò)加密。
 
  審計 可以對 querylog 執(zhí)行 grep。 可以在表上使用 PL/pgSQL 觸發(fā)器來進行審計。
 
  備份、恢復和日志 InnoDB 使用寫前(write-ahead)日志記錄。支持在線和離線完全備份以及崩潰和事務(wù)恢復。需要第三方軟件才能支持熱備份。 在數(shù)據(jù)目錄的一個子目錄中維護寫前日志。支持在線和離線完全備份以及崩潰、時間點和事務(wù)恢復。 可以支持熱備份。
 
  約束 支持主鍵、外鍵、惟一和非空約束。對檢查約束進行解析,但是不強制實施。 支持主鍵、外鍵、惟一、非空和檢查約束。
 
  存儲過程和用戶定義函數(shù) 支持 CREATE PROCEDURE 和 CREATE FUNCTION 語句。存儲過程可以用 SQL 和 C++ 編寫。用戶定義函數(shù)可以用 SQL、C 和 C++ 編寫。 沒有單獨的存儲過程,都是通過函數(shù)實現(xiàn)的。用戶定義函數(shù)可以用 PL/pgSQL(專用的過程語言)、PL/Tcl、PL/Perl、PL/Python 、SQL 和 C 編寫。
 
  觸發(fā)器 支持行前觸發(fā)器、行后觸發(fā)器和語句觸發(fā)器,觸發(fā)器語句用過程語言復合語句編寫。 支持行前觸發(fā)器、行后觸發(fā)器和語句觸發(fā)器,觸發(fā)器過程用 C 編寫。
 
  系統(tǒng)配置文件 my.conf Postgresql.conf
 
  數(shù)據(jù)庫配置 my.conf Postgresql.conf
 
  客戶機連接文件 my.conf pg_hba.conf
 
  XML 支持 有限的 XML 支持。 有限的 XML 支持。
 
  數(shù)據(jù)訪問和管理服務(wù)器 OPTIMIZE TABLE —— 回收未使用的空間并消除數(shù)據(jù)文件的碎片
 
  myisamchk -analyze —— 更新查詢優(yōu)化器所使用的統(tǒng)計數(shù)據(jù)(MyISAM 存儲引擎)
 
  mysql —— 命令行工具
 
  MySQL Administrator —— 客戶機 GUI 工具 Vacuum —— 回收未使用的空間
 
  Analyze —— 更新查詢優(yōu)化器所使用的統(tǒng)計數(shù)據(jù)
 
  psql —— 命令行工具
 
  pgAdmin —— 客戶機 GUI 工具
 
  并發(fā)控制 支持表級和行級鎖。InnoDB 存儲引擎支持 READ_COMMITTED、READ_UNCOMMITTED、REPEATABLE_READ 和 SERIALIZABLE。使用 SET TRANSACTION ISOLATION LEVEL 語句在事務(wù)級設(shè)置隔離級別。 支持表級和行級鎖。支持的 ANSI 隔離級別是 Read Committed(默認 —— 能看到查詢啟動時數(shù)據(jù)庫的快照)和 Serialization(與 Repeatable Read 相似 —— 只能看到在事務(wù)啟動之前提交的結(jié)果)。使用 SET TRANSACTION 語句在事務(wù)級設(shè)置隔離級別。使用 SET SESSION 在會話級進行設(shè)置。
 
  VS PostgreSQL MySQL
 
  開源 PostgreSQL是一個免費的開源系統(tǒng),它受PostgreSQL許可證(自由的開源許可證)的約束。 MySQL屬于Oracle旗下產(chǎn)品,并提供幾種付費版本供用戶使用
 
  管理 PostgreSQL是全球用戶共同發(fā)展的產(chǎn)品 MySQL是GNU通用公共許可以及各種專有協(xié)議條款下的產(chǎn)品
 
  性能 PostgreSQL適合對讀寫速度要求很高的大型系統(tǒng)中使用 MySQL主要用于Web應(yīng)用程序,該Web應(yīng)用程序僅需要數(shù)據(jù)庫來進行數(shù)據(jù)交易。
 
  遵循ACID PostgreSQL從頭到尾都遵循ACID原則,并確保滿足需求 MySQL只有在使用InnoDB和NDB集群存儲引擎時才符合ACID要求。
 
  SQL 兼容性 “從文檔看,PostgreSQL是兼容大部分SQL的。 PostgreSQL支持SQL:2011的大多數(shù)功能。在核心一致性所需的179個強制性功能中,PostgreSQL至少兼容160個。此外,還有一系列受支持的可選功能。” “從文檔看,MySQL在某些版本是兼容部分SQL。 我們對該產(chǎn)品的主要目標之一是繼續(xù)努力達到SQL標準的要求,但又不犧牲速度或可靠性。我們可以添加SQL擴展或?qū)Ψ荢QL功能的支持,如果這樣可以極大地提高MySQL服務(wù)器在我們大部分用戶群中的可用性。”
 
  支持平臺 PostgreSQL可以運行在Linux, Windows (Win2000 SP4 及以上),F(xiàn)reeBSD,OpenBSD,NetBSD , Mac OS X, AIX, IRIX ,Solaris和 Tu64. 也支持由技術(shù)巨頭惠普開發(fā)的HP-UX OS,以及開源的Unix OS。 MySQL可以運行在Oracle Solaris,Microsoft Windows, Linux Mac OS X。MySQL擴展了對開源FreeBSD OS的支持
 
  編程語言支持 PostgreSQL是用C語言編寫的,它支持多種編程語言,最突出的C/C++, Delphi, JavaScript, Java, Python, R , Tcl , Go, Lisp, Erlang和.Net. PostgreSQL是用C和C++編寫的,它支持C/C++, Erlang,PHP,Lisp,和Go, Perl,Java, Delphi, R ,和 Node.js.
 
  物化視圖 PostgreSQL支持物化視圖 MySQL不支持物化視圖
 
  數(shù)據(jù)備份 PostgreSQL支持主備復制,并且還可以通過實現(xiàn)第三方擴展來處理其他類型的復制 MySQL支持主備復制,其中每個節(jié)點都是主節(jié)點,并且有權(quán)更新數(shù)據(jù)
 
  可拓展性 PostgreSQL是高度可擴展的,您可以添加和擁有數(shù)據(jù)類型,運算符,索引類型和功能語言。 MySQL不支持拓展性。
 
  訪問方法 PostgreSQL支持所有標準。 MySQL支持所有標準。
 
  社區(qū)支持 PostgreSQL有一個活躍的社區(qū)支持,該社區(qū)幫助改善現(xiàn)有功能,其富有創(chuàng)造力的提交者竭盡全力確保該數(shù)據(jù)庫保持最新的功能和最大的安全性,成為最先進的數(shù)據(jù)庫。 MySQL也有一個龐大的追隨者社區(qū),這些社區(qū)貢獻者,特別是在被Oracle收購之后,主要關(guān)注一些偶爾出現(xiàn)的新功能,并維護現(xiàn)有功能。
 
  安全性 PostgreSQL為連接提供本機SSL支持,以加密客戶端/服務(wù)器通信。 PSQL還具有行級安全性。 MySQL是高度安全的,并且包含多個安全功能。
 
  PostgreSQL相對于MySQL的優(yōu)勢
 
  在SQL的標準實現(xiàn)上要比MySQL完善,而且功能實現(xiàn)比較嚴謹;
 
  存儲過程的功能支持要比MySQL好,具備本地緩存執(zhí)行計劃的能力;
 
  對表連接支持較完整,優(yōu)化器的功能較完整,支持的索引類型很多,復雜查詢能力較強;
 
  PG主表采用堆表存放,MySQL采用索引組織表,能夠支持比MySQL更大的數(shù)據(jù)量。
 
  PG的主備復制屬于物理復制,相對于MySQL基于binlog的邏輯復制,數(shù)據(jù)的一致性更加可靠,復制性能更高,對主機性能的影響也更小。
 
  MySQL的存儲引擎插件化機制,存在鎖機制復雜影響并發(fā)的問題,而PG不存在。
 
  MySQL相對于PG的優(yōu)勢:
 
  innodb的基于回滾段實現(xiàn)的MVCC機制,相對PG新老數(shù)據(jù)一起存放的基于XID的MVCC機制,是占優(yōu)的。新老數(shù)據(jù)一起存放,需要定時觸 發(fā)VACUUM,會帶來多余的IO和數(shù)據(jù)庫對象加鎖開銷,引起數(shù)據(jù)庫整體的并發(fā)能力下降。而且VACUUM清理不及時,還可能會引發(fā)數(shù)據(jù)膨脹;
 
  MySQL采用索引組織表,這種存儲方式非常適合基于主鍵匹配的查詢、刪改操作,但是對表結(jié)構(gòu)設(shè)計存在約束;
 
  MySQL的優(yōu)化器較簡單,系統(tǒng)表、運算符、數(shù)據(jù)類型的實現(xiàn)都很精簡,非常適合簡單的查詢操作;
 
  MySQL分區(qū)表的實現(xiàn)要優(yōu)于PG的基于繼承表的分區(qū)實現(xiàn),主要體現(xiàn)在分區(qū)個數(shù)達到上千上萬后的處理性能差異較大。
 
  MySQL的存儲引擎插件化機制,使得它的應(yīng)用場景更加廣泛,比如除了innodb適合事務(wù)處理場景外,myisam適合靜態(tài)數(shù)據(jù)的查詢場景。
 

(編輯:武林網(wǎng))

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 寻甸| 兴文县| 万年县| 五常市| 灯塔市| 无极县| 嘉善县| 莱阳市| 庆云县| 滦平县| 平凉市| 岫岩| 百色市| 平昌县| 迁西县| 淮南市| 嘉禾县| 牟定县| 阳新县| 正镶白旗| 巴林右旗| 深水埗区| 清徐县| 棋牌| 若尔盖县| 栾川县| 磐安县| 凤凰县| 克拉玛依市| 铁岭市| 大丰市| 迁安市| 即墨市| 宜章县| 筠连县| 遂溪县| 乳源| 道孚县| 龙南县| 肇东市| 图木舒克市|