mysql性能優化

致使數據庫服務器響應客戶端的訪問請求慢:mysql

1 硬件配置低:cpu(uptime,top) 內存(free -m) 硬盤I/O(top中的wa)sql

2 帶寬:網絡測速軟件數據庫

3 數據庫版本低,修改服務運行時配置參數 :vim

命令行修改,重啓服務失效緩存

#mysql>set [global] 變量名=值;服務器

查看變量網絡

#mysql>show variables like "%關鍵字%"併發

修改配置文件,永久生效;tcp

vim /etc/my.conf工具

[mysqld]

變量名=值

 

影響處理速度參數有那些?

max_connections:最大併發鏈接數

曾經有過的最大鏈接數/max_connections=0.85

曾經有過的最大鏈接數:#mysql>show global status like "max_used_connections";

顯示當前的鏈接信息:#mysql>show processlist;

connect_timeout:創建鏈接時,tcp三次握手的超時時間,默認10秒

wait_timeout:鏈接創建後,等待斷開的超時時間,默認8個小時

thread_cache_size:充許保存在緩存中能夠重複使用線程數量 

table_open_cache=3:爲全部線程緩存的打開表的數量

mysql的功能模塊
鏈接池:    接收到客戶端鏈接時,檢查是否有線程 和資源響應本次鏈接
SQL接口:   把sql命令傳遞給mysql服務處理
分析器:  檢查sql命令語法是否正確
優化器:   對執行的sql命令作優化處理
查詢緩存:   查詢緩存空間是從機器的物理內存劃分出來的,存儲曾經查找過的記錄。

表記錄。
存儲引擎 表處理器 (myisam / innodb )
文件系統 硬盤(存儲服務器)

管理工具 軟件安裝後提供的命令

 

數據庫服務器處理客戶端查詢請求的過程?
當數據庫服務器接收到查詢請求時,先在本機的查詢緩存裏查詢數據。若查詢

緩存裏有查找的數據,從查詢緩存提取數據,返給客戶端,若沒有,到表中查

找記錄,找到以後,先把查詢結果存放到查詢緩存裏,在把結果返給客戶端。

查看數據庫服務器與查詢相關參數的設置
mysql> show variables like "query_cache%";
query_cache_type = 0|1|2
0 不容許存

1|2 容許存

1 只要查詢結果沒超過query_cache_limit就能夠存
2 程序要在執行查詢時,要在查詢命令里加 select 加存放本次查詢結果的關鍵字 * from a;

query_cache_wlock_invalidate | OFF
當客戶端查詢myisam存儲引擎的表時,若此時有客戶端同時對查詢的表作寫

操做的話,數據庫服務不從查詢緩存裏提取查詢結果返給客戶端,而是等對錶

的寫操做完成後,從新從表裏查找記錄返給客戶端。

 

查看當前數據庫服務器查詢緩存的統計信息
mysql> show global status like "qcache%";
Qcache_hits 5 查詢結果是在查詢緩存裏找到的次數
Qcache_inserts 50 查詢請求總數

Qcache_lowmem_prunes 查詢緩存空間不足的次數

 

查詢日誌文件:記錄客戶端鏈接後執行的全部sql命令

general-log

general-log-file=目錄名/文件名

 

慢查詢日誌:

slow-query-log

slow-query-time=3(超過指定秒數的查詢才被記錄)

slow-query-log-file=目錄名/文件名

#mysqldumpslow db20-slow.log

 

Qcache_not_cached 35 不容許把查詢結果存放到查詢緩存裏的次數

innodb_lock_wait_timeout 50

相關文章
相關標籤/搜索