既然MySQL 8和PostgreSQL 10已經發布了,如今是時候回顧一下這兩大開源關係型數據庫是如何彼此競爭的。php
在這些版本以前,人們廣泛認爲,Postgres在功能集表現更出色,也因其「學院派」風格而備受稱讚,MySQL則更善長大規模併發讀/寫。git
可是隨着它們最新版本的發佈,二者之間的差距明顯變小了。github
特性比較數據庫
首先來看看咱們都喜歡談論的「時髦」功能。併發
phpMyAdmin是個知名MySQL/MariaDB在線管理工具,phpMyAdmin團隊在4.7.7版本中修復了一個危害嚴重的CSRF漏洞(PMASA-2017-9),攻擊者能夠經過誘導管理員訪問惡意頁面,悄無聲息地執行任意SQL語句。函數 該篇文章咱們將結合VulnSpy的在線phpMyAdmin環境來熟悉該漏洞的利用。工具 在線 phpMyAdmin CSRF 演練地址:https://www.vulnspy.com/?u=pmasa-2017-9spa 注:重啓演示靶機便可重置靶機.net 1 在線建立 phpMyAdmin 環境點擊 VulnSpy 提供的建立靶機地址(https://www.vsplate.com/?github=vulnspy/PMASA-2017-9)code 跳轉到 VSPlate 後,直接點擊 打開 |
MySQL 8 | PostgreSQL 10 |
查詢 & 分析 | ||
公用表表達式 (CTEs) | New | |
窗口函數 | New | |
數據類型 | ||
JSON支持 | Improved | |
GIS / SRS | Improved | |
全文檢索 | ||
可擴展性 | ||
邏輯複製 | New | |
半同步複製 | New | |
聲明式分區 | New |
過去常常會說MySQL最適合在線事務,PostgreSQL最適合分析流程,但如今不是了。
公共表表達式(CTEs)和窗口函數是選擇PostgreSQL的主要緣由。可是如今,經過引用同一個表中的boss_id來遞歸地遍歷一張僱員表,或者在一個排序的結果中找到一箇中值(或50%),這在MySQL上再也不是問題。
在PostgreSQL中進行復制缺少配置靈活性,這就是Uber轉向MySQL的緣由。可是如今,有了邏輯複製特性,就能夠經過建立一個新版本的Postgres並切換到它來實現零停機升級。在一個巨大的時間序列事件表中截斷一個陳舊的分區也要容易得多。
就特性而言,這兩個數據庫如今都是一致的。