91网首页-91网页版-91网在线观看-91网站免费观看-91网站永久视频-91网站在线播放

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

性能比拼: MySQL vs PostgreSQL

admin
2025年4月8日 23:58 本文熱度 181

本內(nèi)容是對(duì)知名性能評(píng)測(cè)博主 Anton Putra MySQL vs PostgreSQL Performance Benchmark (Latency - Throughput - Saturation)[1] 內(nèi)容的翻譯與整理, 有適當(dāng)刪減, 相關(guān)指標(biāo)和結(jié)論以原作為準(zhǔn)

MySQL vs PostgreSQL 數(shù)據(jù)庫(kù)性能對(duì)比

在本內(nèi)容中,我們將對(duì)比 MySQL 和 PostgreSQL 關(guān)系型數(shù)據(jù)庫(kù)的性能。我們將運(yùn)行一系列測(cè)試,其中 第一項(xiàng)測(cè)試 重點(diǎn)關(guān)注 數(shù)據(jù)寫(xiě)入(ingestion)效率

首先,我們會(huì)測(cè)量:

  • 數(shù)據(jù)插入請(qǐng)求的延遲,使用 p99 百分位數(shù) 進(jìn)行評(píng)估
  • 數(shù)據(jù)庫(kù)的吞吐量,即每秒可處理的 請(qǐng)求數(shù)和插入數(shù)
  • 數(shù)據(jù)庫(kù)的飽和度(saturation),即數(shù)據(jù)庫(kù)的負(fù)載情況,在這里我們主要關(guān)注:
    • CPU 使用率
    • 內(nèi)存使用率

此外,我們還會(huì)測(cè)量:

  • 磁盤(pán)寫(xiě)入操作數(shù)
  • 數(shù)據(jù)庫(kù)在磁盤(pán)上的存儲(chǔ)效率

值得一提的是,這兩種數(shù)據(jù)庫(kù)在這些方面的差異 非常大。

最后,我們將評(píng)估 數(shù)據(jù)庫(kù)的連接池(connection pool),觀察它們?nèi)绾喂芾聿迦霐?shù)據(jù)的連接。

在 第二項(xiàng)測(cè)試 中,我們將測(cè)量 數(shù)據(jù)讀?。╮etrieval) 的效率。

我使用的是當(dāng)前最新版本:

  • PostgreSQL 17.0
  • MySQL 9.0


測(cè)試設(shè)計(jì)

為了進(jìn)行測(cè)試,我在 兩個(gè)數(shù)據(jù)庫(kù) 中分別創(chuàng)建了 兩張表,具體的 SQL 語(yǔ)句如下。

假設(shè)我們有一個(gè) 分析系統(tǒng)(analytics backend),用于記錄 用戶在網(wǎng)站上的行為,例如:

  • 登錄
  • 登出
  • 搜索
  • 將商品加入購(gòu)物車(chē)

數(shù)據(jù)庫(kù)中有兩張表:

  1. Customer 表
    • 存儲(chǔ)用戶的 姓名、地址
    • 設(shè)有 主鍵 ID
  2. Event 表
    • 設(shè)有 主鍵 ID
    • 外鍵 指向 Customer 表的主鍵
    • 記錄 用戶執(zhí)行的操作類(lèi)型(action type)

第一項(xiàng)測(cè)試
我們將使用以下 SQL 語(yǔ)句插入數(shù)據(jù),隨機(jī)生成客戶 ID 和操作類(lèi)型

第二項(xiàng)測(cè)試
我們將在包含 約 7000 萬(wàn)條記錄 的數(shù)據(jù)庫(kù)上執(zhí)行 簡(jiǎn)單的 JOIN 查詢

  • 隨機(jī)生成一個(gè) event ID
  • 查詢并連接 customer 表
  • 返回用戶的姓名、地址和操作類(lèi)型

如果你有任何關(guān)于 改進(jìn)測(cè)試設(shè)計(jì) 的建議,請(qǐng)告訴我!


代碼概覽

在客戶端編寫(xiě)方面,我選擇使用 Golang,因?yàn)椋?/span>

  • Golang 是一門(mén)流行的編程語(yǔ)言
  • 它擁有成熟的數(shù)據(jù)庫(kù)驅(qū)動(dòng)庫(kù)

為了讓 MySQL 和 PostgreSQL 的測(cè)試盡可能公平,我使用 database/sql 接口 進(jìn)行數(shù)據(jù)庫(kù)操作,而不是直接使用 pgx 驅(qū)動(dòng)(盡管 pgx 可能會(huì)降低查詢延遲)。
但本次測(cè)試的重點(diǎn)是 對(duì)比數(shù)據(jù)庫(kù)本身的性能,而不是不同的驅(qū)動(dòng)實(shí)現(xiàn)。

此外,我確保:

  • 執(zhí)行相同的 SQL 查詢
  • 使用相同的數(shù)據(jù)庫(kù)連接配置

如果你有任何改進(jìn)建議,請(qǐng)告訴我,或者更好的是,提交一個(gè) Pull Request


第一項(xiàng)測(cè)試:數(shù)據(jù)寫(xiě)入

現(xiàn)在,我們開(kāi)始 第一項(xiàng)測(cè)試。

這次測(cè)試 總共持續(xù)了近 3 小時(shí),但我會(huì)將其壓縮至 幾分鐘 展示。
測(cè)試過(guò)程中,我們會(huì):

  • 部署多個(gè)客戶端
  • 逐步增加負(fù)載
  • 持續(xù)向數(shù)據(jù)庫(kù)發(fā)送請(qǐng)求
  • 每 60 秒增加一個(gè)虛擬客戶端

你可以在 右上方的圖表 看到 每秒查詢數(shù)(QPS),而 左側(cè)圖表 顯示的是 從客戶端測(cè)量的插入延遲。

測(cè)試結(jié)果:

  • 從一開(kāi)始,PostgreSQL 的插入延遲明顯低于 MySQL
  • MySQL 插入數(shù)據(jù)的時(shí)間幾乎是 PostgreSQL 的兩倍
  • PostgreSQL 的 CPU 使用率更低,意味著它有更大的吞吐能力
  • PostgreSQL 占用的內(nèi)存也更少

最大區(qū)別:

  • MySQL 需要更多的磁盤(pán)操作來(lái)存儲(chǔ)相同數(shù)量的記錄
  • PostgreSQL 在磁盤(pán)上的存儲(chǔ)效率更高
  • PostgreSQL 執(zhí)行的磁盤(pán)操作更少,數(shù)據(jù)占用空間也更小

連接池情況:

  • 兩個(gè)數(shù)據(jù)庫(kù)的連接池最終都達(dá)到了 80 個(gè)連接
  • 每個(gè)客戶端的最大連接數(shù)設(shè)置為 40
  • 每個(gè)數(shù)據(jù)庫(kù)有 2 個(gè)客戶端在不斷生成負(fù)載

臨界點(diǎn):

  • 當(dāng) QPS 達(dá)到 5,500 時(shí),MySQL 開(kāi)始跟不上 PostgreSQL
  • MySQL 的延遲和 CPU 使用率激增,導(dǎo)致整體性能下降
  • 當(dāng) QPS 達(dá)到 12,000 時(shí),我為 PostgreSQL 額外添加了一個(gè)客戶端
  • 最終,PostgreSQL 最高可處理 19,000 QPS(4 核 CPU + 直連 SSD)
  • MySQL 最高只能處理 10,000 QPS,約為 PostgreSQL 的一半

第一項(xiàng)測(cè)試:數(shù)據(jù)分析

現(xiàn)在,我們查看 整個(gè)測(cè)試期間的數(shù)據(jù)

  1. 每秒查詢數(shù)(QPS)

  1. 插入延遲(客戶端測(cè)量)

  1. CPU 使用率

  1. 總插入記錄數(shù)

  • PostgreSQL 插入 約 6500 萬(wàn)條記錄
  • MySQL 插入 約 5000 萬(wàn)條記錄
  • 在第二項(xiàng)測(cè)試前,我會(huì)為 MySQL 增加一些記錄,使數(shù)據(jù)量一致
  1. 內(nèi)存使用

  1. 磁盤(pán)寫(xiě)入操作

  1. 連接池大小

  1. 數(shù)據(jù)庫(kù)大小
    • PostgreSQL 存儲(chǔ)數(shù)據(jù)的 磁盤(pán)效率更高
    • CPU 和磁盤(pán)操作占用更少
    • PostgreSQL 在數(shù)據(jù)寫(xiě)入方面明顯優(yōu)于 MySQL


第二項(xiàng)測(cè)試:數(shù)據(jù)讀取

在運(yùn)行 第二項(xiàng)測(cè)試 之前,我為 MySQL 額外添加了一些記錄,使其與 PostgreSQL 的數(shù)據(jù)量保持一致。

測(cè)試內(nèi)容:

  • 查詢 event 表中的數(shù)據(jù)
  • 通過(guò) event ID 進(jìn)行 JOIN
  • 返回用戶的姓名、地址和操作類(lèi)型
  • 測(cè)試前,重啟兩個(gè)數(shù)據(jù)庫(kù),以清除緩存

磁盤(pán)讀取數(shù)據(jù)問(wèn)題:

  • 由于可能的配置錯(cuò)誤,我沒(méi)有獲取到 PostgreSQL 的磁盤(pán)讀取數(shù)據(jù)
  • 但我仍然有 MySQL 的磁盤(pán)操作數(shù)據(jù)

測(cè)試結(jié)果:

  • 延遲差距不像第一項(xiàng)測(cè)試那么大
  • 但 PostgreSQL 仍然比 MySQL 低延遲
  • MySQL 的 CPU 使用率 顯著高于 PostgreSQL
  • 這個(gè)趨勢(shì)一直持續(xù),直到 MySQL 達(dá)到 CPU 使用瓶頸,性能下降

臨界點(diǎn):

  • 當(dāng) QPS 達(dá)到 18,000 時(shí),MySQL 的性能下降更明顯
  • MySQL 的延遲出現(xiàn)波動(dòng),而 PostgreSQL 仍然保持穩(wěn)定
  • 當(dāng) QPS 達(dá)到 20,000 時(shí),MySQL 無(wú)法再處理更多查詢
  • 我為 PostgreSQL 額外增加了一個(gè)客戶端,加速測(cè)試
  • 最終,PostgreSQL 在 32,000 QPS 時(shí)達(dá)到 90% CPU 使用率,開(kāi)始下降

結(jié)論:

  • 在數(shù)據(jù)寫(xiě)入和讀取方面,PostgreSQL 都比 MySQL 更高效
  • 如果你有任何改進(jìn)建議,例如更改客戶端代碼或測(cè)試設(shè)計(jì),請(qǐng)告訴我!

第二項(xiàng)測(cè)試:數(shù)據(jù)分析

現(xiàn)在,我們查看 整個(gè)測(cè)試期間的數(shù)據(jù)

  1. 每秒查詢數(shù)(QPS)

  1. 數(shù)據(jù)讀取延遲

  1. CPU 使用率

  1. 內(nèi)存使用

  1. 數(shù)據(jù)庫(kù)連接數(shù)

  1. 磁盤(pán)讀取操作

參考資料
[1] 

MySQL vs PostgreSQL Performance Benchmark (Latency - Throughput - Saturation): 

https://www.youtube.com/watch?v=R7jBtnrUmYI

閱讀原文:原文鏈接


該文章在 2025/4/9 12:01:24 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專(zhuān)業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車(chē)隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類(lèi)企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷(xiāo)售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 日本深夜刺激视频 | 国产精品自 | 日韩精品不卡自拍 | 国产69精品| 欧美日韩综合网 | 青青操视频免费观看 | 日韩视频中文 | 精品多人p群| 最新欧美日韩 | 日韩一二区 | 日本在线干 | 成人免费无 | 国产r级在线播放 | 欧美在线换 | 国女精品爽爽一 | 乱码女一区二区三区 | 欧洲乱码 | 欧美午夜激情影院 | 激情图区色综网 | 日韩精品真 | 国产福利一 | 国产国产人免费人成 | 午夜绿帽 | 福利所第一导航 | 国产黄在线视频免费 | 中文字幕一区二区三 | 精品国产呦系 | 国产熟女乱子伦露 | 久精品国产厨房久 | 韩国日本香港三级 | 国产拳头 | 91国内在线视频 | 日本乱偷 | 日韩一区精品 | 国产在线三级 | 成人永久免费 | 成人地址国产一区 | 国产国产成年在 | 国产视频中文字幕 | 韩国伦理电影网站 | 95激情视频|