MySQL與PostgreSQL比較

來源:互聯網
上載者:User
特性 MySQL PostgreSQL
執行個體 通過執行 MySQL 命令(mysqld)啟動執行個體。一個執行個體可以管理一個或多個資料庫。一台服務 器可以運行多個 mysqld 執行個體。一個執行個體管理器可以監視 mysqld 的各個執行個體。
通過執行 Postmaster 進程(pg_ctl)啟動執行個體。一個執行個體可以管理一個或多個資料庫,這些數 據庫組成一個叢集。叢集是磁碟上的一個地區,這個地區在安裝時初始化並由一個目錄組成,所有資料都 儲存在這個目錄中。使用 initdb 建立第一個資料庫。一台機器上可以啟動多個執行個體。
資料庫 資料庫是命名的對象集合,是與執行個體中的其他資料庫分離的實體。一個 MySQL 執行個體中的所有 資料庫共用同一個系統編目。 資料庫是命名的對象集合,每個資料庫是與其他資料庫分離的實體。每個資料庫有自己的系統 編目,但是所有資料庫共用 pg_databases。
資料緩衝區 通過 innodb_buffer_pool_size 配置參數設定資料緩衝區。這個參數是記憶體緩衝區的位元組數 ,InnoDB 使用這個緩衝區來緩衝表的資料和索引。在專用的資料庫伺服器上,這個參數最高可以設定為 機器實體記憶體量的 80%。 Shared_buffers 緩衝。在預設情況下分配 64 個緩衝區。預設的塊大小是 8K。可以通過設定 postgresql.conf 檔案中的 shared_buffers 參數來更新緩衝區快取。
資料庫連接 客戶機使用 CONNECT 或 USE 語句串連資料庫,這時要指定資料庫名,還可以指定使用者 id 和 密碼。使用角色管理資料庫中的使用者和使用者組。 客戶機使用 connect 語句串連資料庫,這時要指定資料庫名,還可以指定使用者 id 和密碼。 使用角色管理資料庫中的使用者和使用者組。
身分識別驗證 MySQL 在資料庫級管理身分識別驗證。 基本只支援密碼認證。 PostgreSQL 支援豐富的認證方法:信任認證、口令認證、Kerberos 認證、基於 Ident 的認 證、LDAP 認證、PAM 認證
加密 可以在表級指定密碼來對資料進行加密。還可以使用 AES_ENCRYPT 和 AES_DECRYPT 函數對列 資料進行加密和解密。可以通過 SSL 串連實現網路加密。 可以使用 pgcrypto 庫中的函數對列進行加密/解密。可以通過 SSL 串連實現網路加密。
審計 可以對 querylog 執行 grep。 可以在表上使用 PL/pgSQL 觸發器來進行審計。
查詢解釋 使用 EXPLAIN 命令查看查詢的解釋計劃。 使用 EXPLAIN 命令查看查詢的解釋計劃。
備份、恢複和日誌 InnoDB 使用寫前(write-ahead)日誌記錄。支援線上和離線完全備份以及崩潰和事務恢複。 需要第三方軟體才能支援熱備份。 在資料目錄的一個子目錄中維護寫前日誌。支援線上和離線完全備份以及崩潰、時間點和事務 恢複。 可以支援熱備份。
JDBC 驅動程式 可以從 參考資料 下載 JDBC 驅動程式。 可以從 參考資料 下載 JDBC 驅動程式。
表類型 取決於儲存引擎。例如,NDB 儲存引擎支援分區表,記憶體引擎支援記憶體表。 支援暫存資料表、常規表以及範圍和清單類型的分區表。不支援雜湊分割表。 由於PostgreSQL的 表分區是通過表繼承和規則系統完成了,所以可以實現更複雜的分區方式。
索引類型 取決於儲存引擎。MyISAM:BTREE,InnoDB:BTREE。 支援 B-樹、雜湊、R-樹和 Gist 索引。
約束 支援主鍵、外鍵、惟一和非空約束。對檢查約束進行解析,但是不強制實施。 支援主鍵、外鍵、惟一、非空和檢查約束。
預存程序和使用者定義函數 支援 CREATE PROCEDURE 和 CREATE FUNCTION 語句。預存程序可以用 SQL 和 C++ 編寫。用 戶定義函數可以用 SQL、C 和 C++ 編寫。 沒有單獨的預存程序,都是通過函數實現的。使用者定義函數可以用 PL/pgSQL(專用的過程語 言)、PL/Tcl、PL/Perl、PL/Python 、SQL 和 C 編寫。
觸發器 支援行前觸發器、行後觸發器和語句觸發器,觸發器語句用過程語言複合陳述式編寫。 支援行前觸發器、行後觸發器和語句觸發器,觸發器過程用 C 編寫。
系統設定檔 my.conf Postgresql.conf
資料庫配置 my.conf Postgresql.conf
客戶機串連檔案 my.conf pg_hba.conf
XML 支援 有限的 XML 支援。 有限的 XML 支援。
資料訪問和管理伺服器 OPTIMIZE TABLE —— 回收未使用的空間並消除資料檔案的片段
myisamchk -analyze —— 更新查詢最佳化器所使用的統計資料(MyISAM 儲存引擎)
mysql —— 命令列工具
MySQL Administrator —— 客戶機 GUI 工具
Vacuum —— 回收未使用的空間
Analyze —— 更新查詢最佳化器所使用的統計資料
psql —— 命令列工具
pgAdmin —— 客戶機 GUI 工具
並發控制 支援表級和行級鎖。InnoDB 儲存引擎支援 READ_COMMITTED、READ_UNCOMMITTED、 REPEATABLE_READ 和 SERIALIZABLE。使用 SET TRANSACTION ISOLATION LEVEL 語句在事務級設定隔離級 別。 支援表級和行級鎖。支援的 ANSI 隔離等級是 Read Committed(預設 —— 能看到查詢啟動 時資料庫的快照)和 Serialization(與 Repeatable Read 相似 —— 只能看到在事務啟動之前提交的 結果)。使用 SET TRANSACTION 語句在事務級設定隔離等級。使用 SET SESSION 在會話級進行設定。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.