mysql 效能優化

2021-05-26 11:29:06 字數 1784 閱讀 9826

一:   主要可以通過5種方法  1:query_cache_size   2開啟二進位制日誌    3  開啟慢查詢日誌   4: table_cache    5: key_buffer_size

前面三種 我們已經討論過了 ,現在看看後面的兩種 :

table_cache 指定表的快取記憶體的大小,當mysql訪問乙個表的時候,如果在表緩衝區中還有空間,該錶就被開啟並放入其中,這樣可以更快地訪問表內容。通過檢查峰值時間的狀態值open_tables和opened_tables,可以決定是否需要增加table_cache的值。如果你發現open_tables等於table_cache,並且opened_tables在不斷增長,那麼你就需要增加table_cache的值了(上述狀態值可以使用show status like 『open%tables』獲得)。注意,不能盲目地把table_cache設定成很大的值。如果設定得太高,可能會造成檔案描述符不足,從而造成效能不穩定或者連線失敗。

open_tables 表示當前開啟的表快取數,如果執行flush tables操作,則此系統會關閉一些當前沒有使用的表快取而使得此狀態值減小;

opend_tables 表示曾經開啟的表快取數,會一直進行累加,如果執行flush tables操作,值不會減小。

在mysql預設安裝情況下,table_cache的值在2g記憶體以下的機器中的值預設時256到512,如果機器有4g記憶體,則預設這個值是2048,但這決意味著機器記憶體越大,這個值應該越大,因為table_cache加大後,使得mysql對sql響應的速度更快了,不可避免的會產生更多的死鎖(dead lock),這樣反而使得資料庫整個一套操作慢了下來,嚴重影響效能。所以平時維護中還是要根據庫的實際情況去作出判斷,找到最適合你維護的庫的table_cache值。

在談談key_buffer_size

key_buffer_size 這個引數是用來設定索引塊(index blocks)快取的大小,它被所有執行緒共享,嚴格說是它決定了資料庫索引處理的速度,尤其是索引讀的速度。那我們怎麼才能知道key_buffer_size 的設定是否合理呢,一般可以檢查狀態值key_read_requests和key_reads,比例key_reads / key_read_requests應該盡可能的低,比如1:100,1:1000 ,1:10000。

variable_name    value

key_read_requests     20948

key_reads     69

key_reads / key_read_requests=69: 20948≈1:300

所以比較大,效能狀況欠佳

二  :盡量把 left join  轉為join

三 :explain的使用

返回結果:

id: select識別符

select_type: select型別

table:輸出的行所引用的表

type:聯接型別

possible_keys:指出mysql能使用哪個索引在該表中找到行

key:顯示mysql實際決定使用的鍵(索引)

key_len:顯示mysql決定使用的鍵長度

ref:顯示使用哪個列或常數與key一起從表中選擇行

rows:顯示mysql認為它執行查詢時必須檢查的行數

extra:該列包含mysql解決查詢的詳細資訊

四 :新增索引:

新增索引的原則

1   較頻繁的作為查詢條件的字段應該新增索引

2   唯一性太差的字段不應該新增索引

3  更新太頻繁的字段不適合建立索引

4  不會出現在where子句中的字段不應該建立索引

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生成乙個執行計...