首頁 >資料庫 >mysql教程 >MySQL 調優如何提升 Laravel 效能

MySQL 調優如何提升 Laravel 效能

WBOY
WBOY原創
2024-07-29 20:33:03603瀏覽

MySQL 設定調優是資料庫專業人員和管理員實施的資料庫管理的重要組成部分。它的目的是配置資料庫以適應其硬體和工作負載。但在資料庫管理領域之外,MySQL 設定調優的用處很大程度上被忽視了。

我們假設 MySQL 調優可以顯著影響 Web 應用程式的效能。如果我們能夠展現MySQL調優的價值,我們相信企業和組織可能會熱衷於更大規模地結合這種實踐。

如何提高 Laravel 應用程式效能

透過調優提高應用程式效能最好透過解決以下領域的綜合方法來實現:

  • 伺服器資源 – CPU、記憶體、儲存
  • 軟體設定 – Linux、Nginx、Php…
  • 資料庫管理系統 (DBMS) 設定 – MySQL、PostgreSQL
  • 最佳化資料庫方案並更改索引
  • 最佳化應用程式 - 程式碼、查詢、架構......

許多經驗豐富的開發人員並不將資料庫效能調優視為提高應用程式效能的機會,因為他們對此領域知之甚少。他們花了大量時間來優化程式碼庫,但已經達到了這樣的地步:不再為投入的時間和精力帶來有價值的結果。我們對 MySQL 調優如何對流行開源 Web 應用程式的效能產生積極影響的研究旨在向開發人員展示這一事實。

測試方法

我們對 Laravel Aimeos 的測試程式讓我們可以使用種子資料來比較配置前後應用程式的效能。透過首先使用預設配置運行測試,我們獲得了有價值的控制結果來與調整後的配置進行比較。

我們使用以下流程來準備和測試每個應用程式:

  1. 部署 Laravel Aimeos。
  2. 帶有資料的種子資料庫。
  3. 為 JMeter 準備測驗。
  4. 執行測試 10 分鐘 – 使用 Blazemeter 效能測試平台進行 JMeter 測試。
  5. 調整 MariaDB 配置 - 預設配置測試後,我們的設定保持不變,但 MariaDB 針對工作負載、伺服器資源和資料庫大小進行了調整。
  6. 重新執行測試 – 使用 Blazemeter 重複 JMeter 測試以調整配置。

我們在 Github 上測試期間發布了 JMeter 測試、MySQL 狀態和 MySQL 變數。

我們查看了哪些指標?

我們在本研究中檢視的指標是:

  1. 回應時間(延遲)是發送請求並在伺服器端處理請求到客戶端收到第一位元組之間的時間。這是讓您深入了解伺服器效能的重要指標。
  2. 每秒查詢數 是衡量資料庫伺服器每秒執行多少查詢的指標。
  3. CPU 使用率

我們收集了CPU 使用率每秒查詢數 指標來比較工作負載。

Laravel 艾梅奧斯

Aimeos Laravel 是一個流行的電子商務 Web 應用程式框架,用於建立線上商店、市場和 B2B 應用程式。借助 Aimeos,用戶可以為 Laravel 創建 API 優先的電子商務商店,該商店可以擴展以支援超過 10 億種商品。它有 30 多種語言版本,安裝量超過 30 萬次。

測試設定

為了測試 Aimeos,我們開始使用 10 個使用者進行測試,但我們必須減少使用者數量,因為我們無法使用預設配置完成測試。

我們為資料庫植入了 500 Mb 資料。
我們的測驗時間是 10 分鐘。

我們使用:

  • 安裝了 Debian 11 作為作業系統的 AWS EC2 執行個體 c5.xlarge,
  • Apache 作為網路伺服器,
  • MariaDB 10.5 設定為預設配置,資料庫大小 500 MB。

MySQL配置

Aimeos Laravel 使用的配置如下:

Laravel Aimeos 500Mb 的調整配置

query_cache_type=1
query_cache_size=134217728
query_cache_limit=16777216
query_cache_min_res_unit=4096
thread_cache_size=0
key_buffer_size=8388608
max_allowed_packet=1073741824
sort_buffer_size=2097152
read_rnd_buffer_size=262144
bulk_insert_buffer_size=8388608
myisam_sort_buffer_size=8388608
innodb_buffer_pool_chunk_size=134217728
innodb_buffer_pool_size=805306368
max_heap_table_size=16777216
tmp_table_size=16777216
join_buffer_size=8388608
max_connections=151
table_open_cache=2048
table_definition_cache=1408
innodb_flush_log_at_trx_commit=1
innodb_log_file_size=201326592
innodb_log_buffer_size=16777216
innodb_write_io_threads=4
innodb_read_io_threads=4
innodb_file_per_table=1
innodb_flush_method=O_DIRECT
innodb_thread_concurrency=0
innodb_purge_threads=4
optimizer_search_depth=0
thread_handling=pool-of-threads
thread_pool_size=2

測試結果

Aimeos Laravel 測試結果展示了預設配置和調整配置之間的顯著效能改進。

MySQL 的最佳化導致平均伺服器回應時間顯著改善,減少從 1.4 秒減少到 800 毫秒以下。

回應時間(延遲) 下降了42%,平均CPU 使用率 下降了86%,而每秒查詢數 增加了令人難以置信的291%,從每秒12 至35 次查詢。

結果圖表如下:

How MySQL Tuning Improves the Laravel Performance 回應時間(毫秒),Aimeos 調整 MySQL 配置與預設值
How MySQL Tuning Improves the Laravel Performance CPU 使用率 (%),Aimeos 調整的 MySQL 設定與預設值
How MySQL Tuning Improves the Laravel Performance 每秒查詢數,Aimeos 調整 MySQL 配置與預設值

社區貢獻者

我們與 Initlab 公司的 Laravel 開發人員 Gevorg Mkrtchyan 和 Sergey Sinitsa 合作調查了這個問題,非常感謝他們的專業知識。
Sergey 部署了 Aimeos,Gevorg 準備了播種資料庫的程式碼。

結論

我們使用Aimeos Laravel 進行的測試程序顯示,配置資料庫後,回應時間(延遲)CPU 使用率每秒查詢數 有了顯著改進伺服器配置。

反應時間(延遲) 下降了 42%,而 CPU 使用率 下降了 86%。 每秒查詢數 Aimeos Laravel 500MB 增加了 291%。

總之,MySQL 調優是資料庫管理的重要方面,可以對 Laravel 應用程式的效能產生重大影響。效能不佳的 Web 應用程式可能會導致頁面載入時間增加、請求處理緩慢以及使用者體驗不佳,對 SEO 和銷售產生負面影響。透過使用 MySQL 調優優化 Web 應用程式的效能,企業和組織可以提高銷售額、頁面瀏覽量、轉換率和 SEO 排名。

透過這項研究,我們希望展示 MySQL 調優作為提高 Laravel 應用程式效能的一種手段的價值,並鼓勵 Laravel 開發人員在優化應用程式效能時考慮這種做法。

使用 Releem 等工具,可以自動配置資料庫以獲得最佳效能,從而減輕軟體開發團隊的負擔。

以上是MySQL 調優如何提升 Laravel 效能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn