mysql 8版本優化建議

2022-07-08 00:36:09 字數 2757 閱讀 1835

mysql-8版本優化

參考官方文件:

資料庫優化大方向:

資料庫效能:取決於資料庫級別的幾個因素,例如 表,查詢 和 配置 設定。這些軟體結構導致在硬體級別執行cpu和i / o操作,必須將這些操作最小化並使其盡可能高效。
mysql資料庫優化基本包含三個方面:

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

資料庫級別:優化**的結構 | 優化索引 | 使用適合的儲存引擎 | 優化鎖定策略 |對記憶體區域的優化

硬體優化:磁碟的讀寫 | cpu週期

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

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

它們各自的優化也分很多種,參考官方文件:optimization.html

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

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

cpu :

推薦使用4u伺服器來專門做資料庫伺服器用

​記憶體 :

記憶體基本實際中不擔心,官方建議是不要小於2g。但是工作中mysql server伺服器基本都是遠超2g的記憶體,所以應該不用太擔心記憶體問題

​磁碟 :

磁碟是一大方面,磁碟的好壞直接影響著io的讀寫速度,這是物理性的,無法改變。mysql通常作為資料庫伺服器,它每秒都會進行大量的,複雜的查詢操作,對磁碟的讀寫量可想而知!我們能做的,在磁碟做陣列上,使用raid10陣列方式最好,注意不要嘗試使用raid5。如果不考慮成本,使用固態ssd硬碟給mysql資料庫使用。

二,資料庫級別的優化

通常預設的 my.cnf 配置檔案無法發揮出 mysql 最高的效能,所以需要根據不同的硬體

進行優化,配置檔案的優化也是重點,下面是物理記憶體為 32g 的資料庫優化引數,具體從全

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

default-time-zone=+8:00

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

interactive_timeout = 120

#伺服器關閉互動式連線前等待活動的秒數。

wait_timeout = 120

#伺服器關閉非互動連線之前等待活動的秒數。

open_files_limit = 10240

#mysql 伺服器開啟檔案控制代碼數限制。

group_concat_max_len = 102400

#mysql 預設的拼接最大長度為 1024 個位元組,由於 1024 個位元組會出現不夠用的情況, 根據實際情況進行修改。

user=mysql

#使用 mysql 使用者執行。

character-set-server=utf8

init_connect='set names utf8'

#設定字符集為 utf8

7back_log = 600

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

監聽佇列的大小。預設值 50。

8max_connections = 5000

#mysql 允許最大的程序連線數,如果經常出現 too many connections 的錯誤提示, 則需要增大此值。

9max_connect_errors = 6000

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

10table_open_cache = 2048

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

11thread_concurrency = 8

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

12query_cache_limit = 4m

#預設是4kb,設定越大值,對大資料查詢有好處,但是如果是小資料查詢,就容易照成記憶體碎片和浪費

13bulk_insert_buffer_size = 64m

#批量插入資料快取大小,可以有效提高插入效率,預設為8m

下面幾個引數將是對二進位制日誌檔案的優化

14log-bin=mysql-bin

#開啟二進位制功能

15binlog_cache_size = 4m

#在事務過程中容納二進位制日誌sql語句的快取大小。

16expire_logs_days = 7

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

MySql8版本2059錯誤解決方案

工作中一直使用的是mysql 5.6版本,想著mysql8已經發布好幾年了,本地安裝個測試資料庫看看,但是安裝完成後,用n icat連線,一直報2059錯誤,真是奇了怪了。晚上查了原因,說是在mysql8之前的版本,預設的加密規則是mysql native password,而在mysql8後的版本...

mysql8 優化 MySQL 8 0 優化

優化效果 從大到小 硬體裝置 mysql資料庫 linux作業系統 表設計 硬體裝置優化 提公升硬體裝置,例如使用ssd高速磁碟,cpu等。mysql資料庫配置優化 物理記憶體的50 80 這裡為 innodb buffer pool size 2000000000 雙1模式 按事物刷盤,刷日誌 i...

mysql8 解壓版配置

mysql 設定mysql客戶端預設字符集 default character set utf8 mysqld 設定3306埠 port 3306 設定mysql的安裝目錄 basedir e mysql mysql 8.0.20 winx64 設定mysql資料庫的資料的存放目錄 datadir ...