Mysql的兩個重點優化和資料對比

2021-08-01 16:33:19 字數 1762 閱讀 5477

優化table_cache

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

對於有1g記憶體的機器,推薦值是128-256。

案例1:該案例來自乙個不是特別繁忙的伺服器

table_cache – 512

open_tables – 103

opened_tables – 1273

uptime – 4021421 (measured in seconds)

該案例中table_cache似乎設定得太高了。在峰值時間,開啟表的數目比table_cache要少得多。

案例2:該案例來自一台開發伺服器。

table_cache – 64

open_tables – 64

opened-tables – 431

uptime – 1662790 (measured in seconds)

雖然open_tables已經等於table_cache,但是相對於伺服器執行時間來說,opened_tables的值也非常低。因此,增加table_cache的值應該用處不大。

案例3:該案例來自乙個upderperforming的伺服器

table_cache – 64

open_tables – 64

opened_tables – 22423

uptime – 19538

該案例中table_cache設定得太低了。雖然執行時間不到6小時,open_tables達到了最大值,opened_tables的值也非常高。這樣就需要增加table_cache的值。

優化key_buffer_size

key_buffer_size指定索引緩衝區的大小,它決定索引處理的速度,尤其是索引讀的速度。通過檢查狀態值key_read_requests和key_reads,可以知道key_buffer_size設定是否合理。比例key_reads / key_read_requests應該盡可能的低,至少是1:100,1:1000更好(上述狀態值可以使用show status like 『key_read%』獲得)。

key_buffer_size只對myisam表起作用。即使你不使用myisam表,但是內部的臨時磁碟表是myisam表,也要使用該值。可以使用檢查狀態值created_tmp_disk_tables得知詳情。

對於1g記憶體的機器,如果不使用myisam表,推薦值是16m(8-64m)。

案例1:健康狀況

key_buffer_size – 402649088 (384m)

key_read_requests – 597579931

key_reads - 56188

案例2:警報狀態

key_buffer_size – 16777216 (16m)

key_read_requests – 597579931

key_reads - 53832731

案例1中比例低於1:10000,是健康的情況;案例2中比例達到1:11,警報已經拉響。

HttpHandler開發的兩個重點問題

大家在用httphandler的時候,一般都會有兩個大的疑問 當然,前提是你有鑽研精神的話,呵呵 老實說,這個屬性很多人都感興趣,但搞懂的人確實不多。msdn中的介紹也是不知所以然。獲取乙個值,該值指示其他請求是否可以使用ihttphandler例項。該屬性預設為false 我來這麼說吧,首先我們為...

HttpHandler開發的兩個重點問題

大家在用httphandler的時候,一般都會有兩個大的疑問 當然,前提是你有鑽研精神的話,呵呵 1.isreusable到底什麼意思?老實說,這個屬性很多人都感興趣,但搞懂的人確實不多。msdn中的介紹也是不知所以然。獲取乙個值,該值指示其他請求是否可以使用 ihttphandler 例項。該屬性...

virtual function的兩個優化

這倆真是歡啊。humus這篇說d3d的api都是virtual function call,這效能損失很心疼。所以就弄個callback函式,然後到d3ddevice的virtual table把api的函式位址找出來,然後指過去,於是api呼叫就不用經過virtual table的查詢了。dela...