致使數據庫服務器響應客戶端的訪問請求慢: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