mysql配置調(diào)優(yōu)是數(shù)據(jù)庫(kù)專(zhuān)業(yè)人員和管理員實(shí)施的數(shù)據(jù)庫(kù)管理的重要組成部分。它的目的是配置數(shù)據(jù)庫(kù)以適應(yīng)其硬件和工作負(fù)載。但在數(shù)據(jù)庫(kù)管理領(lǐng)域之外,mysql 配置調(diào)優(yōu)的用處很大程度上被忽視了。
我們假設(shè) mysql 調(diào)優(yōu)可以顯著影響 web 應(yīng)用程序的性能。如果我們能夠展示mysql調(diào)優(yōu)的價(jià)值,我們相信企業(yè)和組織可能會(huì)熱衷于更大規(guī)模地結(jié)合這種實(shí)踐。
如何提高 laravel 應(yīng)用程序性能
通過(guò)調(diào)優(yōu)提高應(yīng)用程序性能最好通過(guò)解決以下領(lǐng)域的綜合方法來(lái)實(shí)現(xiàn):
服務(wù)器資源 – cpu、內(nèi)存、存儲(chǔ)
軟件配置 – linux、nginx、php…
數(shù)據(jù)庫(kù)管理系統(tǒng)(dbms)配置 – mysql、postgresql
優(yōu)化數(shù)據(jù)庫(kù)方案并更改索引
優(yōu)化應(yīng)用程序 – 代碼、查詢(xún)、架構(gòu)……
許多經(jīng)驗(yàn)豐富的開(kāi)發(fā)人員并不將數(shù)據(jù)庫(kù)性能調(diào)優(yōu)視為提高應(yīng)用程序性能的機(jī)會(huì),因?yàn)樗麄儗?duì)此領(lǐng)域知之甚少。他們花費(fèi)了大量時(shí)間來(lái)優(yōu)化代碼庫(kù),但已經(jīng)達(dá)到了這樣的地步:不再為投入的時(shí)間和精力帶來(lái)有價(jià)值的結(jié)果。我們對(duì) mysql 調(diào)優(yōu)如何對(duì)流行開(kāi)源 web 應(yīng)用程序的性能產(chǎn)生積極影響的研究旨在向開(kāi)發(fā)人員展示這一事實(shí)。
測(cè)試方法
我們對(duì) laravel aimeos 的測(cè)試程序讓我們可以使用種子數(shù)據(jù)來(lái)比較配置前后應(yīng)用程序的性能。通過(guò)首先使用默認(rèn)配置運(yùn)行測(cè)試,我們獲得了有價(jià)值的控制結(jié)果來(lái)與調(diào)整后的配置進(jìn)行比較。
我們使用以下流程來(lái)準(zhǔn)備和測(cè)試每個(gè)應(yīng)用程序:
-
部署 laravel aimeos。
帶有數(shù)據(jù)的種子數(shù)據(jù)庫(kù)。
為 jmeter 準(zhǔn)備測(cè)試。
運(yùn)行測(cè)試 10 分鐘 – 使用 blazemeter 性能測(cè)試平臺(tái)進(jìn)行 jmeter 測(cè)試。
調(diào)整 mariadb 配置 – 默認(rèn)配置測(cè)試后,我們的設(shè)置保持不變,但 mariadb 針對(duì)工作負(fù)載、服務(wù)器資源和數(shù)據(jù)庫(kù)大小進(jìn)行了調(diào)整。
重新運(yùn)行測(cè)試 – 使用 blazemeter 重復(fù) jmeter 測(cè)試以調(diào)整配置。
測(cè)試期間我們?cè)?github 上發(fā)布了 jmeter 測(cè)試、mysql 狀態(tài)和 mysql 變量。
我們查看了哪些指標(biāo)?
我們?cè)诒狙芯恐胁榭吹闹笜?biāo)是:
響應(yīng)時(shí)間(延遲)是發(fā)送請(qǐng)求并在服務(wù)器端處理請(qǐng)求到客戶(hù)端收到第一個(gè)字節(jié)之間的時(shí)間。這是讓您深入了解服務(wù)器性能的重要指標(biāo)。
每秒查詢(xún)數(shù) 是衡量數(shù)據(jù)庫(kù)服務(wù)器每秒執(zhí)行多少查詢(xún)的指標(biāo)。
cpu 利用率.
我們收集了cpu 利用率 和每秒查詢(xún)數(shù) 指標(biāo)來(lái)比較工作負(fù)載。
laravel 艾梅奧斯
aimeos laravel 是一個(gè)流行的電子商務(wù) web 應(yīng)用程序框架,用于創(chuàng)建在線(xiàn)商店、市場(chǎng)和 b2b 應(yīng)用程序。借助 aimeos,用戶(hù)可以為 laravel 創(chuàng)建 api 優(yōu)先的電子商務(wù)商店,該商店可以擴(kuò)展以支持超過(guò) 10 億種商品。它有 30 多種語(yǔ)言版本,安裝量超過(guò) 300,000 次。
測(cè)試設(shè)置
為了測(cè)試 aimeos,我們以 10 個(gè)用戶(hù)開(kāi)始測(cè)試,但由于默認(rèn)配置無(wú)法完成測(cè)試,我們不得不減少用戶(hù)數(shù)量。
我們?cè)跀?shù)據(jù)庫(kù)中植入了 500 mb 數(shù)據(jù)。
我們的測(cè)試時(shí)間是10分鐘。
我們使用:
安裝了 debian 11 作為操作系統(tǒng)的 aws ec2 實(shí)例 c5.xlarge,
apache 作為網(wǎng)絡(luò)服務(wù)器,
mariadb 10.5 設(shè)置為默認(rèn)配置,數(shù)據(jù)庫(kù)大小 500 mb。
mysql配置
aimeos laravel 使用的配置如下:
laravel aimeos 500mb 的調(diào)整配置
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
登錄后復(fù)制
測(cè)試結(jié)果
aimeos laravel 測(cè)試結(jié)果展示了默認(rèn)配置和調(diào)整配置之間的顯著性能改進(jìn)。
mysql 的優(yōu)化導(dǎo)致平均服務(wù)器響應(yīng)時(shí)間顯著改善,從 1.4 秒減少到 800 毫秒以下。
響應(yīng)時(shí)間(延遲)下降了 42%,平均cpu 利用率下降了 86%,而每秒查詢(xún)數(shù)增加了令人難以置信的 291%,從每秒 12 個(gè)查詢(xún)?cè)黾拥?35 個(gè)查詢(xún)。
結(jié)果圖表如下:
響應(yīng)時(shí)間(毫秒),aimeos 調(diào)整 mysql 配置與默認(rèn)值
cpu 利用率 (%),aimeos 調(diào)整 mysql 配置與默認(rèn)值
每秒查詢(xún)數(shù),aimeos 調(diào)整 mysql 配置與默認(rèn)值
社區(qū)貢獻(xiàn)者
我們與 initlab 公司的 laravel 開(kāi)發(fā)者 gevorg mkrtchyan 和 sergey sinitsa 合作調(diào)查了這一問(wèn)題,非常感謝他們的專(zhuān)業(yè)知識(shí)。
sergey 部署了 aimeos,gevorg 準(zhǔn)備了用于播種數(shù)據(jù)庫(kù)的代碼。
結(jié)論
我們使用 aimeos laravel 的測(cè)試程序在配置數(shù)據(jù)庫(kù)服務(wù)器配置后,在
響應(yīng)時(shí)間(延遲)、cpu 利用率和每秒查詢(xún)數(shù)方面顯示出顯著的改進(jìn)。
響應(yīng)時(shí)間(延遲)下降了 42%,而cpu 利用率下降了 86%。 aimeos laravel 500mb 中的每秒查詢(xún)次數(shù) 增加了 291%。
總之,mysql 調(diào)優(yōu)是數(shù)據(jù)庫(kù)管理的一個(gè)重要方面,可以對(duì) laravel 應(yīng)用程序的性能產(chǎn)生重大影響。性能不佳的 web 應(yīng)用程序可能會(huì)導(dǎo)致頁(yè)面加載時(shí)間增加、請(qǐng)求處理緩慢以及用戶(hù)體驗(yàn)不佳,從而對(duì) seo 和銷(xiāo)售產(chǎn)生負(fù)面影響。通過(guò)使用 mysql 調(diào)優(yōu)優(yōu)化 web 應(yīng)用程序的性能,企業(yè)和組織可以提高銷(xiāo)售額、瀏覽量、轉(zhuǎn)化率和 seo 排名。
通過(guò)這項(xiàng)研究,我們希望展示 mysql 調(diào)優(yōu)作為提高 laravel 應(yīng)用程序性能的一種手段的價(jià)值,并鼓勵(lì) laravel 開(kāi)發(fā)人員在優(yōu)化應(yīng)用程序性能時(shí)考慮這種做法。
使用 releem 等工具,可以自動(dòng)配置數(shù)據(jù)庫(kù)以獲得最佳性能,減輕軟件開(kāi)發(fā)團(tuán)隊(duì)的負(fù)擔(dān)。






