oracle Mysql PostgreSQL 資料庫的對比

耀阳居士發表於2024-07-17

oracle Mysql PostgreSQL 資料庫的對比

HOXJUN

於 2018-07-13 18:44:25 釋出

閱讀量7.3k
收藏 11

點贊數 1
版權
Mysql的多表連線查詢只支援 Nest Loop,不支援 hash join 和 sort merge join,子查詢效能較低,不支援 sequence
Mysql在執行過程中出現問題只產生很少的效能資料,難準確定位問題產生的原因
Mysql的複製是非同步的,無法透過 Master/Slave做到資料零丟失
mysql線上操作功能弱,即在Mysql表中加列,基本上是新建一個表,而且建索引時會鎖定整張表,即在建索引的過程中,不能對錶進行操作,可以透過修改Mysql原始碼來實現線上 DDL的功能,或者是用過上層架構來解決這個問題,如先在 slave資料庫上把DDL做完,然後把應用從master庫切換到slave,再把原先的 master上把DDL做完
Mysql對於sql語法支援較弱,基本上不適合做資料倉儲,一些廠商開發了基於Mysql的資料倉儲儲存引擎(如 Infobright),但這個方案只是解決了部分資料倉儲的問題,sql功能弱的問題仍無法完全解決
Infobright的社群版本功能上還有很多限制,如不支援資料更新,不支援太多併發執行(最多支援十幾個)

PostgreSQL支援複雜的sql,還支援大量的分析函式,適合做資料倉儲
PostgreSQL支援所有主流的多表連線查詢方式(如 Nest loop/hash join/sort merge join等),支援絕大多數的SQL語法(如with子句)

PostgreSQL對正規表示式支援很好,內建函式很豐富,欄位型別支援陣列型別。

PostgreSQL除了可以使用PL/PGSSQL寫儲存過程外,還可以使用各種主流開發語言的語法(如python的PL/Python、Perl的PL/Perl來寫儲存過程)

PostgreSQL效能最佳化工具和度量資訊豐富:PostgreSQL有大量效能檢視,可以方便定位問題

PostgreSQL線上操作功能好,PostgreSQL增加空值的列時,本質上只是在系統表上把列定義上,無須對物理結構做更新,這可以使得加列在瞬間完成

PostgreSQL還支援線上建立索引的功能,建索引的過程可以不鎖更新操作
PostgreSQL還支援同步複製功能,透過master和slave之間的複製可以實現零資料丟失的高可用方案
PostgreSQL支援空間索引

PostgreSQL比Oracle在功能上稍弱,pg不支援索引組織表

pg和oracle都使用共享記憶體的程序結構,客戶端和資料庫伺服器建立一個連線後,資料庫伺服器就啟動一個程序為這個連線服務,這 和mysql的執行緒模型不同

pg的WAL日誌和oracle的redo日誌都是記錄物理塊資料變化的,這和mysql的binlog也不同

pg支援網路地址型別,XML型別,JSON型別,UUID型別以及陣列型別,有強大的正規表示式函式,where條件中可以使用正規表示式匹配,可以使用python或Perl等語言寫儲存過程
pg比oracle更小巧
————————————————

版權宣告:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連結和本宣告。

原文連結:https://blog.csdn.net/yumenshizhongjingjie/article/details/81036268

相關文章