mysql-8版本優化建議


mysql-8版本優化

參考官方文檔:https://dev.mysql.com/doc/refman/8.0/en/

 

 

 

 

數據庫優化大方向:

數據庫性能:取決於數據庫級別的幾個因素,例如 表,查詢 和 配置 設置。這些軟件結構導致在硬件級別執行CPU和I / O操作,必須將這些操作最小化並使其盡可能高效。

mysql數據庫優化基本包含三個方面:

  • 數據庫級別的優化

  • 硬件優化

  • 平衡便攜性和性能

這三種方式又有各自的優化方案:

數據庫級別:優化表格的結構 | 優化索引 | 使用適合的存儲引擎 | 優化鎖定策略 |對內存區域的優化

硬件優化:磁盤的讀寫 | cpu周期

平衡便攜性和性能:注釋方面的優化

總體來說,mysql數據庫的優化有以上三大塊

它們各自的優化也分很多種,參考官方文檔:https://dev.mysql.com/doc/refman/8.0/en/optimization.html


日常我們優化方案有哪些呢?

一,首先我們先看實際環境下,硬件的優化我們能做多少?

CPU :
推薦使用4u服務器來專門做數據庫服務器用

內存 :
內存基本實際中不擔心,官方建議是不要小於2G。但是工作中mysql server服務器基本都是遠超2G的內存,所以應該不用太擔心內存問題

磁盤 :
磁盤是一大方面,磁盤的好壞直接影響着IO的讀寫速度,這是物理性的,無法改變。mysql通常作為數據庫服務器,它每秒都會進行大量的,復雜的查詢操作,對磁盤的讀寫量可想而知!我們能做的,在磁盤做陣列上,使用RAID10陣列方式最好,注意不要嘗試使用RAID5。如果不考慮成本,使用固態SSD硬盤給mysql數據庫使用。

二,數據庫級別的優化

通常默認的 my.cnf 配置文件無法發揮出 MySQL 最高的性能,所以需要根據不同的硬件

進行優化,配置文件的優化也是重點,下面是物理內存為 32G 的數據庫優化參數,具體從全

局、二進制日志、主從、innodb、myisam 幾個方面優化,僅供參考

  1. default-time-zone=+8:00

#默認 mysql 使用的是系統時區,修改為北京時間,也就是所說的東八區。

  1. interactive_timeout = 120

#服務器關閉交互式連接前等待活動的秒數。

  1. wait_timeout = 120

#服務器關閉非交互連接之前等待活動的秒數。

  1. open_files_limit = 10240

#MySQL 服務器打開文件句柄數限制。

  1. group_concat_max_len = 102400

#mysql 默認的拼接最大長度為 1024 個字節,由於 1024 個字節會出現不夠用的情況, 根據實際情況進行修改。

  1. user=mysql

#使用 mysql 用戶運行。

             character-set-server=utf8

             init_connect='SET NAMES utf8'

#設置字符集為 utf8

          7 back_log = 600

#在 MySQL 暫時停止響應新請求之前,短時間內的多少個請求可以被存在堆棧中。如果系統在短時間內有很多連接,則需要增大該參數的值,該參數值指定到來的 TCP/IP 連接的

監聽隊列的大小。默認值 50。

          8 max_connections = 5000

#MySQL 允許最大的進程連接數,如果經常出現 Too Many Connections 的錯誤提示, 則需要增大此值。

          9 max_connect_errors = 6000

#設置每個主機的連接請求異常中斷的最大次數,當超過該次數,MySQL 服務器將禁止 host 的連接請求,直到 mysql 服務器重啟或通過 flush hosts 命令清空此 host 的相關信息。

          10 table_open_cache = 2048

#指定表高轉緩存的大小,每當mysql方位一個表時,如果表緩沖區還有空間,該表就被打開並放入其中,這樣可以更加快速訪問表內容

          11 thread_concurrency = 8

#這個值正確與否,對mysql的性能影響很大,在多個cpu核下,錯誤設置值,會導致mysql不能充分利用cpu;比如有一個雙核的cpu,那么值應該為4;2個雙核的cpu,那么值應該為8

           12 query_cache_limit = 4M

#默認是4kb,設置越大值,對大數據查詢有好處,但是如果是小數據查詢,就容易照成內存碎片和浪費

          13 bulk_insert_buffer_size = 64M

#批量插入數據緩存大小,可以有效提高插入效率,默認為8M

下面幾個參數將是對二進制日志文件的優化

           14 log-bin=mysql-bin

#打開二進制功能

          15 binlog_cache_size = 4M

#在事務過程中容納二進制日志SQL語句的緩存大小。

          16 expire_logs_days = 7

#二進制日志只留存最近7天,不用人工手動刪除

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM