mysql數據庫 調優
mysql調優
硬件配置
網絡帶寬
mysql運行參數
慢查詢日誌
網絡架構
多實例(一臺服務器上運行多個數據庫服務)
分庫
分表
當一臺數據庫服務器處理客戶端的請求慢時,
可能是哪些原因造成?
硬件配置低:(內存 cpu 硬盤i/o )
查看硬件使用情況
free -m
top
網絡帶寬:
測試帶寬(擴展帶寬)
提供數據庫服務軟件的版本太低:
vim /etc/my.cnf
[mysqld]
選項-值(不選就是默認的)
/etc/init.d/mysql restart
數據庫服務器處理查詢請求的過程:連接池》sql接口》分析器》優化》存儲引擎》文件系統》管理工具
接收到查詢請求時,現在查詢緩存裏查找記錄,如果有,直接回給客戶端,
如果沒有,到表裏去找,找到後先將結果存儲到查詢緩存裏,再回數據給客戶端。
查看服務運行的參數值
mysql> show variables like "%關鍵字%";(查看)
mysql> set global 變量名=值;(修改)
並發連接數
mysql> show variables like "%connect%";(查看鏈接)
max_connections=151(默認151)
mysql> set global max_connections=200;(改為200)
mysql> show global status like "%connect%"; max_used_connections;(查看最大連接次數)
並發量最優公式:max_used_connections/max_connections = 0.85*100%=85%
鏈接超時時間
mysql> show variables like "%timeout%";(查看超時時間)
建立連接時的超時時間connect_timeout=10 默認10秒
建立連接後,等待sql命令的超時時間wait_timeout=28800 默認28800秒
查詢緩存大小
mysql> show variables like "%cache%";(查看查詢)
mysql> show variables like "%query_cache%";(查看查詢大小)
query_cache_size=1048576 大於1048576這個數,不讓存進去
查看查詢緩存的統計信息
mysql> show global status like "%qcache%";
Qcache_hits(在查詢緩存找一次+1)
Qcache_inserts(查詢總數)
可重復使用的線程數量
可以保存在內存裏,可以重復使用的線程的數量
mysql> show variables like "%thread%";
thread_cache_size=9 默認9個
所有線程打開表的總數
mysql> mysql> show variables like "%table%";
table_open_cache=2000 默認2000
key-buffer-size:用於myisam引擎的關鍵索引緩存大小
sort-buffer-size:為每個要排序的線程分配此大小的緩存空間
read-buffer-size:為順序讀取表記錄保留的緩存大小
thread-cache-size: 允許保存在緩存中被重用的線程數量
程序猿編寫提取數據的sql命令太復雜:
查看記錄
單表 多表 嵌套 連接
解決:啟用慢查詢日誌,記錄客戶端連接後
超過指定時間顯示查詢結果的sql命令
mysql服務的日誌類型:
錯誤日誌:默認啟用,記錄的服務在啟動和運行過程中的錯誤信息
binlg日誌:默認沒有啟用,記錄客戶端連接服務器後,執行的除查詢之外的sql命令
慢查詢日誌:默認沒有啟用,記錄客戶端連接後,超過指定時間顯示查詢結果的sql命令
查詢日誌:默認沒有啟用,記錄客戶端鏈接後,執行的所有sql命令
慢查詢日誌的使用:
vim /etc/my.cnf
slow-query-log(日誌存儲位置,默認在數據庫目錄下,主機名-slow.log)
long-query-time=5(超時時間,默認10秒)
/etc/init.d/mysql restart(重啟服務)
[[email protected] mysql]# mysqldumpslow /var/lib/mysql/158-slow.log > /opt/sql.txt(把超時的查詢語句重定向到文件裏)
查詢日誌的使用:
vim /etc/my.cnf
general-log(日誌存儲位置,默認在數據庫目錄下,主機名.log)
[[email protected] mysql]# cat 158.log
網絡架構有問題:
重新規劃網絡
——————————————————————————————————————————————————————————————————————————————————————————
mysql數據庫 調優