Mysql資料庫效能優化

2021-08-31 02:56:33 字數 2862 閱讀 9777

一 show status 詳解

aborted_clients 由於客戶沒有正確關閉連線已經死掉,已經放棄的連線數量。

aborted_connects 嘗試已經失敗的mysql伺服器的連線的次數。

connections 試圖連線mysql伺服器的次數。

created_tmp_tables 當執行語句時,已經被創造了的隱含臨時表的數量。

delayed_insert_threads 正在使用的延遲插入處理器執行緒的數量。

delayed_writes 用insert delayed寫入的行數。

delayed_errors 用insert delayed寫入的發生某些錯誤(可能重複鍵值)的行數。

flush_commands 執行flush命令的次數。

handler_delete 請求從一張表中刪除行的次數。

handler_read_first 請求讀入表中第一行的次數。

handler_read_key 請求數字基於鍵讀行。

handler_read_next 請求讀入基於乙個鍵的一行的次數。

handler_read_rnd 請求讀入基於乙個固定位置的一行的次數。

handler_update 請求更新表中一行的次數。

handler_write 請求向表中插入一行的次數。

key_blocks_used 用於關鍵字快取的塊的數量。

key_read_requests 請求從快取讀入乙個鍵值的次數。

key_reads 從磁碟物理讀入乙個鍵值的次數。

key_write_requests 請求將乙個關鍵字塊寫入快取次數。

key_writes 將乙個鍵值塊物理寫入磁碟的次數。

max_used_connections 同時使用的連線的最大數目。

not_flushed_key_blocks 在鍵快取中已經改變但是還沒被清空到磁碟上的鍵塊。

not_flushed_delayed_rows 在insert delay佇列中等待寫入的行的數量。

open_tables 開啟表的數量。

open_files 開啟檔案的數量。

open_streams 開啟流的數量(主要用於日誌記載)

opened_tables 已經開啟的表的數量。

questions 發往伺服器的查詢的數量。

slow_queries 要花超過long_query_time時間的查詢數量。

threads_connected 當前開啟的連線的數量。

threads_running 不在睡眠的執行緒數量。

uptime 伺服器工作了多少秒。 

提公升效能的建議:

1.如果opened_tables太大,應該把my.cnf中的table_cache變大

2.如果key_reads太大,則應該把my.cnf中key_buffer_size變大.可以用key_reads/key_read_requests計算出cache失敗率

3.如果handler_read_rnd太大,則你寫的sql語句裡很多查詢都是要掃瞄整個表,而沒有發揮索引的鍵的作用,或你有沒正確使用鍵值的聯結(join)。

4.如果threads_created太大,就要增加my.cnf中thread_cache_size的值.可以用threads_created/connections計算cache命中率

5.如果created_tmp_disk_tables太大,就要增加my.cnf中tmp_table_size的值,用基於記憶體的臨時表代替基於磁碟的

show variables顯示出一些mysql系統變數的值,你也能使用mysqladmin variables命令得到這個資訊。如果預設值不合適,你能在mysqld啟動時使用命令列選項來設定這些變數的大多數。

mysql常用配置說明

# the mysql server

[mysqld]

port            = 3306

socket          = /tmp/mysql.sock

skip-locking

#skip-name-resolve

key_buffer = 384m      #索引快取設定

max_allowed_packet = 1m

max_connections = 768

table_cache = 32000  

open_files_limit = 65000

sort_buffer_size = 2m

read_buffer_size = 2m

read_rnd_buffer_size = 8m

myisam_sort_buffer_size = 64m

thread_cache = 8 #mysql執行緒池,快取執行緒

query_cache_size = 32m #使用查詢快取區大小設定

# try number of cpu's*2 for thread_concurrency

thread_concurrency = 8

max_heap_table_size=300000000

interactive_timeout=604800

wait_timeout=604800

log-slow-queries=/tmp/slowquery.log #慢查詢日誌開啟

long_query_time=5 #慢查詢時間設定 5秒

query_cache_type 指定是否使用查詢緩衝,可以設定為0、1、2,該變數是session級的變數。

query_cache_limit 指定單個查詢能夠使用的緩衝區大小,預設為1m。

tmp_table_size 臨時表記憶體大小設定, 設大可避免在磁碟上建立臨時表

效能優化 MySQL資料庫優化

可以從哪幾個方面進行資料庫的優化?如下圖所示 a sql及索引優化 根據需求寫出良好的sql,並建立有效的索引,實現某一種需求可以多種寫法,這時候我們就要選擇一種效率最高的寫法。這個時候就要了解sql優化 b 資料庫表結構優化 根據資料庫的正規化,設計表結構,表結構設計的好直接關係到寫sql語句。c...

資料庫效能優化 MySQL

序 即使有較長的快取有效期和較理想的快取命中率,但是快取的建立和快取過期後的重建都是需要訪問資料庫的。對資料庫寫操作不是很容易引入快取策略。11.1 檢視資料庫狀態 可以通過show status show innodb status 來檢視mysql資料庫的狀態,使用mysqlreport這個第三...

效能優化 mysql資料庫

一 mysql常用命令 1.開啟日誌 1 show global variables like genera 2 set global general log on 3 set global general log off 2.mysql如果開了set autocommit 0,那麼所有的語句一定是...