摘要:雲原生資料庫逐漸成為資料庫行業的“新寵”,未來會有越來越多企業選擇雲原生化,雲原生資料庫將成為企業數字化轉型的重要選擇。 資料庫作為企業數字化轉型的基石,與雲計算相結合打造了雲原生資料庫,雲原生資料庫利用雲平臺的優勢,更能滿足企業對資源彈性調度、按需使用、擴展性、性能降本增效以及各種複雜場景的 ...
資料庫的操作越來越成為整個應用的性能瓶頸,這對於Web應用尤其明顯。關於資料庫的性能,這並不只是DBA需要關心的,而更是後端開發需要去關註的事情。
所以本文講解MySQL在各個方面的優化方向,方便後端開發人員在調優和問題排查過程中找到切入點。
1.伺服器硬體的優化
提升硬體設備,例如選擇儘量高頻率的記憶體(頻率不能高於主板的支持)、提升網路帶寬、使用SSD高速磁碟、提升CPU性能等。
CPU的選擇:
對於資料庫併發比較高的場景,CPU的數量比頻率重要。
對於CPU密集型場景和頻繁執行複雜SQL的場景,CPU的頻率越高越好。
2.MySQL資料庫配置優化
表示緩衝池位元組大小。
推薦值為物理記憶體的50%~80%。
innodb_buffer_pool_size
用來控制redo log刷新到磁碟的策略。
innodb_flush_log_at_trx_commit=1
每提交1次事務同步寫到磁碟中,可以設置為n。
sync_binlog=1
臟頁占innodb_buffer_pool_size的比例時,觸發刷臟頁到磁碟。 推薦值為25%~50%。
innodb_max_dirty_pages_pct=30
後臺進程最大IO性能指標。
預設200,如果SSD,調整為5000~20000
innodb_io_capacity=200
指定innodb共用表空間文件的大小。
innodb_data_file_path
慢查詢日誌的閾值設置,單位秒。
long_qurey_time=0.3
mysql複製的形式,row為MySQL8.0的預設形式。
binlog_format=row
調高該參數則應降低interactive_timeout、wait_timeout的值。
max_connections=200
過大,實例恢復時間長;過小,造成日誌切換頻繁。
innodb_log_file_size
全量日誌建議關閉。
預設關閉。
general_log=0
本文由博客一文多發平臺 OpenWrite 發佈!