Mysql記憶體使用詳解及清空記憶體的命令

2021-09-19 03:48:42 字數 1750 閱讀 2604

mysql通過提供buffer和cache提高資料庫的效能,我們可以通過配置檔案修改引數值。

innodb buffer pool

記憶體中一塊用來儲存 表、索引、輔助buffer等物件的區域。

bufferpool的大小對innodb影響很大,對應的引數就是innodb_buffer_pool_size。我們需要掌握以下幾點:

建議設定為伺服器記憶體總大小的50%~70%。如果同時部署其他應用應適應減小。

innodb在mysql啟動的時候一次性分配整個記憶體給bufferpool。

如果你的伺服器記憶體很大,可以把乙個bufferpool劃分成多個buffer pool instances。可以用innodb_buffer_pool_instances控制緩衝池的數量。

如果buffer pool設定過小,頁資料的重新整理就會非常頻繁。pages資料從bufferpool重新整理到磁碟時,可能造成混亂。

myisam key buffer

所有的執行緒共享了keybuffer的記憶體,key_buffer_size引數據定了這塊記憶體的大小。

對於每個myisam table來講,索引(index)檔案只被開啟一次,而資料檔案(data)每次被執行緒訪問的時候都會開啟一次。

對於每個執行緒,會分配乙個3*最大row長度的記憶體供內部使用。

myisam_use_mmap用來開啟myisam表的記憶體對映功能。

執行緒占用的記憶體

連線和結果的buffer初始值等於net_buffer_length,能夠增加到的最大值就是max_allowed_packet。如果超過最大限制,就會報錯。通常出現在單行資料特別大,比如包含了blog。

sql查詢結束後結果buffer大小就會恢復到初始值。

所有的執行緒使用的都是同乙個記憶體空間。執行緒使用結束後,可以選擇**空間,也可以選擇放入執行緒池,後者仍然佔據記憶體空間。

每個執行緒用於計算的大小由max_digest_length引數決定。

read_buffer_size(順序讀) read_rnd_buffer_size(隨機讀)

a sequential scan of a table 順序掃瞄乙個表

reading rows in an arbitrary sequence 當隨機讀寫表記錄是

臨時表和記憶體表

如果記憶體表和臨時表超過最大限定,就會被寫入磁碟。但如果同create語句明確建立的記憶體表不能超過上面限制。

所有的join操作幾乎在一次傳遞中完成,不產生臨時表。大多數臨時表都是基於記憶體的雜湊表。

大所屬的sort會產生臨時表,臨時表的數量取決表的大小

table_open_cache表快取和table_definition_cache表定義快取

對應了 「表檔案.ibd 」和「表定義檔案.frm」

所有正在使用的table都會被快取到tabel cache。通過「first in, first out」 (fifo).的方式管理

如果表數量特別多,可以增加table_definition_cache的大小,可以提公升開啟表的速度。這個快取占用空間很小。

把所有非使用的狀態的**全部關閉,並且給正在使用中的表打上標記,這些表使用關閉後也會被關閉。

當所有表都被關閉後,命令才會結束。

grant, create user, create server, install plugin , revoke, drop

user, drop server, uninstall plugin

上述操作可能會產生快取,可以通過flush privileges 釋放這些快取。

mysql 記憶體使用 mysql記憶體使用分析 一

author skate time 2012 02 16 mysql記憶體使用分析 從記憶體的使用方式來說,mysql的記憶體使用主要分為以下兩類 1.執行緒獨享記憶體 2.全域性共享記憶體 1.執行緒獨享記憶體 在mysql 中,執行緒獨享記憶體主要用於各客戶端連線線程儲存各種操作的獨享資料,如執...

MySQL外來鍵使用及說明詳解

一 外來鍵約束 mysql通過外來鍵約束來保證表與表之間的資料的完整性和準確性。外來鍵的使用條件 1.兩個表必須是innodb表,myisam表暫時不支援外來鍵 據說以後的版本有可能支援,但至少目前不支援 2.外來鍵列必須建立了索引,mysql 4.1.2以後的版本在建立外來鍵時會自動建立索引,但如...

MySQL外來鍵使用及說明詳解

一 外來鍵約束 mysql通過外來鍵約束來保證表與表之間的資料的完整性和準確性。外來鍵的使用條件 1.兩個表必須是innodb表,myisam表暫時不支援外來鍵 據說以後的版本有可能支援,但至少目前不支援 2.外來鍵列必須建立了索引,mysql 4.1.2以後的版本在建立外來鍵時會自動建立索引,但如...