首頁  >  文章  >  資料庫  >  關於MySQL 優化的一些操作

關於MySQL 優化的一些操作

迷茫
迷茫原創
2017-03-26 13:13:231203瀏覽

1.快取池

MySQL的設計是透過快取池的方式的,也就是說將一部分的資料都儲存到記憶體中,當我們查找一個資料的時候,如果發現在快取池中的時候,就能夠直接的
從快取中獲取,如果不在的話,那麼就去磁碟中載入.所以建議資料庫伺服器採用64位元的作業系統,這樣就能夠使用很大的內存。下面的一些參數是設定記憶體池
的:

SHOW VARIABLES LIKE "innodb_buffer_pool_instances"

查看快取池的數量,可以透過globle 或直接在設定檔中進行設定。

show VARIABLES like "innodb_buffer_pool_size"

查看每個快取池的大小,查詢出來的是位元組。

要注意,這個設定要考慮到自身伺服器的能力.

為了驗證快取的命中率,可以透過

SHOW ENGINE INNODB STATUS

其中有一行輸出非常重要,可以看出命中率:

Buffer pool hit rate 1000 / 1000

表示的就是快取的命中率,一般不能低於95%

2.LRU 清單

資料中緩存中是透過LRU的方式儲存中,也就是說查詢的最新數據是放在最前面的,也就是說是熱點數據,但是這個LRU演算法有一些變種,具體的就是每次

查詢出來的資料並不是插入到最前面的位置,而是插入到中間,這個位置成為midpoint,預設的位置是3/5的位置,這樣做的原因是防止一些掃表的操作將

#資料全部給刷新出去,有幾個參數可以進行設定

SHOW VARIABLES LIKE "innodb_old_blocks_pct"

表示的就是midpoint的位置,預設的是:

,大概就是3/5吧

還有一個參數是

SHOW VARIABLES LIKE "innodb_old_blocks_time"

也就是資料插入到midpoint的時候,需要多久才發揮作用。

如果在真實的環境中遇到熱點資料比較集中的情況下,可以透過設定LRU的參數來防止熱點資料被刷出

以上是關於MySQL 優化的一些操作的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn