Mysql

用於提高 MySQL (5.7) 性能的多種模式

  • December 30, 2021

讓我們先從我的問題開始:

在 MySQL(5.7)伺服器中是否有多個模式(1 個主模式和每天 1 個模式 - 有 5-6 個與主模式結構相同的表,但只在白天工作,並且每晚都會與主模式同步)會影響其性能?

更多背景:

我的數據庫面臨的問題是應用程序在某些負載下執行良好(仍然可以,但 LA 上升到 8),但過去幾天我正在為 CPU 使用率而戰……我探勘了問題和原因是鎖在進行中,我的工作人員被困在試圖插入/更新新數據的過程中。

為了更深入,我每分鐘至少插入 1K 次,每分鐘最多更新 2K 次(有些在以前插入的記錄上),每分鐘超過 4-5K 次選擇。

而且我不是在談論簡單的整數插入…很多字元串、時間戳、整數和 6 個索引(表中的總列數為 32)

我的伺服器相當強大(嗯,相當)。

  • 16GB 記憶體
  • 1TB固態硬碟
  • 8 核,Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz
  • 軟體:MySQL 5.7

我的 my.cnf 的一部分

innodb_buffer_pool_size = 12G
innodb_buffer_pool_instances = 8
innodb_log_file_size = 30G
innodb_log_buffer_size = 16M
innodb_flush_log_at_trx_commit = 2
innodb_thread_concurrency = 8

我仍然得到高達 8.00 的 LA

所有這一切的問題在於,我所有的工人每分鐘都開始工作,而且他們有點互相對抗。

我帶來的是以下場景: - 使用我的“每日”工作表(主要是 SELECTS)創建單獨的模式,並在我的原始模式中進行插入/更新。

這會減少伺服器的負載嗎?

還有一個離題的問題:高達 8.00 的 LA 對伺服器來說是否健康?

謝謝

PS如果您需要更多資訊,請告訴我,我會分享。

問題 #1

你的innodb_thread_concurrency太小了。建議:應該是064。請閱讀我來自Aug 14, 2017MariaDB 10.1.22 以使用更多 RAM 而不是 CPU)的文章,了解原因。

問題 #2

我沒有看到提到的innodb_read_io_threadsinnodb_write_io_threads。預設情況下,兩者都是4. 建議:我將兩者都加倍8(Percona Server 的預設值)。請參閱我的文章Jun 20, 2013MySQL using too much CPU)。

問題 #3

為什麼你的innodb_log_file_size 30G是?InnoDB 重做日誌是按順序寫入的。恕我直言,在 SSD 上寫入順序文件並不是那麼好(請參閱我的文章Feb 06, 2014SSD 上的 MySQL - 有什麼缺點?Sep 25, 2014DB 事務日誌的最佳儲存設備是什麼?)。建議 #1:您可以將 InnoDB 配置為將重做日誌放在單獨的磁碟上。SUGGESTION #2:請暫時製作innodb_log_file_size 1GJan 17, 2013然後,通過閱讀我的文章(MySQL 5.5 - Innodb - innodb_log_file_size 高於 4GB 的組合? )找出合適的大小,其中我指向 Percona 的 mysqlperformanceblog 中的兩個文章:

試一試 !!!

至於題外話:16GB RAM 和 8.00 LA 的伺服器???當然不是 !!!試試這些建議,看看它是否真的有幫助。

Load Average = 8 是可以的,但它通常表示您的馬力不足。在 MySQL 中,這通常意味著您缺少一些有用的索引。

“主要”和“日常”???你在說什麼。也許是數據倉庫的“事實”表和“摘要”表?如果是這樣,那麼我在這裡有很多建議。

“同步回來”??你的意思是你在一個表中收集數據(一天),然後每晚將數據複製到一個更大的表中?再一次,這聞起來像是糟糕的索引。或者可能是複雜的查詢。讓我們看看SHOW CREATE TABLE和一些SELECTs

17 次插入/秒,33 次更新/秒——這些都不是很大的數字。即使是旋轉硬碟也可以處理這種情況。

6個指標?讓我們看看他們(SHOW CREATE TABLE)。“6”偏高;讓我們看看我們是否可以削減。請注意,每個索引 BTree 必須最終更新(參見“更改緩衝區”)INSERT。是否UPDATEs更改任何索引列?你有多個UNIQUE索引嗎?(注:PRIMARY KEY計數。)你有AUTO_INCREMENT嗎?也許它可以被淘汰。

(在我的問題得到解答之前,我無法開始解決您關於“多個模式”的問題;我需要更好地了解正在發生的事情。)

引用自:https://dba.stackexchange.com/questions/193528