mysql的相關優化

2021-10-06 08:46:18 字數 2527 閱讀 4959

mysql的優化

mysql優化三大方向

優化mysql所在伺服器核心。

對mysql配置引數進行優化(my.cnf)此優化需要進行壓力測試來進行引數調整。

對sql語句以及表優化。

伺服器核心方面優化:

網路引數配置

網路引數配置需要修改配置檔案/etc/sysctl.conf,可以在配置檔案後面新增一下內容:

net.core.somaxconn=65536 #每個監聽埠允許的最大的監聽佇列長度,這個值應該適當增大。

net.core.netdev_max_backlog=65536 #當網路埠接收資料報的速率比核心處理資料速度快時,允許傳送到對列中的最大包數

net.ipv4.tcp_max_syn_backlog=65536 #還未獲得鏈結的請求可保持在佇列中的數量,當超過這個數目是,鏈結請求就可能被拋棄

net.ipv4.tcp_fin_timeout=10 #tcp鏈結等待時間,調整這個引數目的是為了加快tcp鏈結**的速度

net.ipv4.tcp_tw_reuse=1 #加快tcp鏈結**的速度

net.ipv4.tcp_tw_recycle=1 #加快tcp鏈結**的速度

以下四個引數設定tcp鏈結接收和傳送資料時緩衝區大小的最大值和和預設值,應該將其調整的更大一些。

net.core.wmem_default=87380

net.core.wmem_max=16777216

net.core.rmem_default=87380

net.core.rmem_max=16777216

以下三個引數用於減少時效的tcp鏈結所占用的資源,提公升資源**效率,改的較小一些

net.ipv4.tcp_keepalive_time=100 #代表tcp傳送keepalive探測訊息的時間間隔

net.ipv4.tcp_keepalive_intvl=10 #代表當tcp傳送keepalive探測訊息未獲得確認是重發探測訊息的時間間隔

net.ipv4.tcp_keepalive_probes=3 #代表tcp鏈結失效之前,最多傳送多少keepalive探測訊息

記憶體相關引數配置

記憶體的相關引數同樣修改/etc/sysctl.conf檔案

kernel.shmmax=2147483648用於定義單個共享記憶體段的最大值,這個引數應該設定的足夠大,以便共享記憶體段能容納下整個innodb緩衝池的大小。建議設定成物理記憶體的一半。

特定資源限制配置

這個配置需要修改配置檔案/etc/security/limits.conf,主要的就是對開啟檔案數量的配置,在mysql的innodb儲存引擎中,每一張表就對應著2-3個檔案,對於允許開啟檔案的數量適當的增大,可以使mysql的資料庫效能更好。

開啟檔案數的配置

* soft nofile 65535

* hard nofile 65535

* 表示對所有使用者生效

soft 代表是當前系統生效的設定

hard 代表系統中所能設定的最大值

nofile 表示所限制的資源是開啟檔案的數量

磁碟排程策略配置

一般預設情況下,centos系統的磁碟排程策略是完全公平佇列模式(cfq),這種排程策略對於資料庫伺服器來說不太適合,而應該使用deadline排程策略。通過以下命令可以修改排程策略:

echo deadline>/sys/block/devname/queue/scheduler

mysql引數優化:

1:mysql 預設的最大連線數為 100,可以在 mysql 客戶端使用以下命令檢視

mysql> show variables like 'max_connections'

;2:檢視當前訪問mysql的執行緒

mysql> show processlist;

3:設定最大連線數

mysql>set global max_connections = 5000;

最大可設定16384,超過沒用

4:檢視當前被使用的connections

mysql>show global status like 'max_user_connections'

還有一些其他的優化如字符集,儲存引擎設定等。

對mysql語句效能優化的16條經驗

① 為查詢快取優化查詢

② explain 我們的select查詢(可以檢視執行的行數)

③ 當只要一行資料時使用limit 1

④ 為搜尋字段建立索引

⑤ 在join表的時候使用相當型別的列,並將其索引

⑥ 千萬不要 order by rand (

)⑦ 避免select *

⑧ 永遠為每張表設定乙個id

⑨ 可以使用enum 而不要varchar

⑩ 盡可能的使用not null

⑪ 固定長度的表會更快

⑫ 垂直分割

⑬ 拆分打的delete或insert語句

⑭ 越小的列會越快

⑮ 選擇正確的儲存引擎

⑯ 小心 "永久鏈結"

MySQL優化相關

慢查詢 檢視是否開啟慢查詢日誌 show variables like slow query log 設定沒有索引的記錄到慢查詢日誌 set global log queries not using indexes on 檢視超過多長時間的sql進行記錄到慢查詢日誌 show variables l...

MySQL優化相關

1 慢查詢分析相關的優化 通過命令檢視慢查詢最長時間,一般預設10s,對於現代高實時系統來講,乙個查詢要10秒鐘是不可接受的,所以我們對慢查詢先進行監控,然後才能進行優化 show variables like long query time 通常我們會把這個時間設定在3秒以內 set global...

mysql 相關引數 Mysql相關引數優化

mysql優化 配置在 mysqld 段裡 innodb buffer pool size 4g 除去redis所占用記憶體,可以設為可用記憶體的一半 slow query log 1 long query time 1 最大連線數優化 show variables like max connect...