導致資料庫伺服器處理速度慢的原因有哪些?
1.伺服器硬體配置低
uptime 負載
iostat \
df -h 磁碟狀態
free -h 記憶體狀態
2.伺服器執行引數配置不合理
檢視所有變數:
show variables [like "%binlog%"];
檢視狀態:
show global status [like "%innodb%"];
重新整理狀態資訊:
flush status;
1》max_connections:允許最大的併發連線數
修改:
1.
set global max_connections=值;
2.echo
max_connections=值 >>
/etc/my.cnf
檢視:
show variables like 「max_connections」;
注意:
曾經併發數/設定的併發連線數=0.85
2》connect_timeout:連線超時時間(預設10秒)
3》wait_timeout:關閉資料庫連線的不活動超時時間(預設8小時)
4》key_buffer_size:用於myisam引擎的關鍵索引快取大小(預設8m)
5》sort_buffer_size:為每個要排序的執行緒分配此大小的快取空間
6》read_buffer_size:為順序讀取表記錄保留的快取大小
7》thread_cache_size:允許儲存在快取中被重用的執行緒數量(預設9)
8》table_open_cache:為所有執行緒快取的開啟表的數量(預設2000)
sql查詢優化:
查詢日誌:記錄客戶端連線和查詢操作(root+授權使用者)
general_log ------------->重啟mysqld服務 -----》預設在/var/lib/mysql/主機名.log
general_log_file=自定義日誌路徑 //若自定義目錄,則目錄歸屬許可權為mysql.mysql
慢查詢日誌:記錄耗時較長或不使用索引的查詢操作
slow_query_log //啟用慢查詢日誌
slow_query_log_file=自定義慢查詢日誌的儲存路徑 預設在/var/lib/mysql
log_query_time=數值 //超多少秒加入日誌(預設10秒)
log_queries_not_using_indexes //不使用索引的加入日誌
--------------------------------------》重啟mysqld服務 ----》生成/var/lib/mysql/主機名-slow.log
統計慢查詢日誌到檔案中:
mysqldumpslow/var/lib/mysql/主機名-slow.log > 檔名
檢視快取的大小:
show variables like "query_cache%";
query_cache_size //檢視快取大小
query_cache_type //檢視快取是否開啟
檢視當前的查詢快取統計:
show global status like "qcache%";
qcache_hits:在查詢快取裡面查詢到的資料次數
步驟:
公升級伺服器硬體
加大網路頻寬
調整mysql服務執行引數
調整與查詢相關的引數
啟用慢查詢日誌
網路架構不合理
mysql效能優化 mysql效能優化
優化方式 1.空間換時間 冗餘 2.時間換空間 字段優先使用型別 int date char varchar text 索引型別 btree索引 hash索引 索引的葉子下,存放乙個資訊指向所在行的資料位址。btree有利於範圍查詢,hash有利於精確查詢。btree用的更多一些。btree索引的常...
mysql的效能優化 mysql效能優化
檢視安裝指令碼 select version 非互動式超時時間,如jdbc show global variables like wait timeout 互動式超時時間,如資料庫工具 show global variables like interactive timeout show sessi...
mysql 效能優化 命令 mysql效能優化
發現問題 當發現程式執行比較慢的時候,首先排除物力資源問題之後,就將注意力轉向mysq資料庫 1 首先確定執行慢的sql語句 mysql show full processlist 2 確認低效的查詢 多次執行第一步發現time耗費大的sql語句。檢視耗費的時間。3 分析效能 為sql生成乙個執行計...