【Mysql 學習】Mysql 怎樣使用記憶體
在應用的地方,給出與儲存器使用相關的伺服器變數的名字。
1 關鍵字緩衝區(變數key_buffer_size)由所有執行緒分享;當需要時,分配伺服器使用的其他緩衝區。
2 每個連線使用一些執行緒特定的空間;一個棧(預設64K,變數thread_stack)、一個連線緩衝區(變數
net_buffer_length)和一個結果緩衝區(變數net_buffer_length)。當需要時,連線緩衝區和結果緩衝區動
態地被擴大到max_allowed_packet。當一個查詢正在執行當前查詢的一個複製時,也分配字串。
3 所有執行緒共享同一基儲存器。
4 目前還沒有什麼是記憶體對映的(除了壓縮表,但是那是另外一個的故事)。這是因為4GB的32位儲存器空間
對最大的資料庫來所不是足夠大的。當一個64位定址空間的系統變得更普遍時,我們可以為記憶體對映增加全
面的支援。
每個做順序掃描的請求分配一個讀緩衝區(變數record_buffer)。
5 所有聯結均用一遍完成並且大多數聯結可以甚至不用一張臨時表來完成。最臨時的表是基於記憶體的(HEAP)
表。有較大記錄長度(以所有列的長度之和計算)的臨時表或包含BLOB列的表在磁碟上儲存。在MySQL版本
3.23.2前一個問題是如果一張HEAP表超過tmp_table_size的大小,你得到錯誤The table tbl_name is full
。在更新的版本中,這透過必要時自動將在記憶體的(HEAP)錶轉變為一個基於磁碟(MyISAM)的表來處理。為了
解決這個問題,你可以透過設定mysqld的tmp_table_size選項,或透過在客戶程式中設定SQL的
SQL_BIG_TABLES選項增加臨時表的大小。在MySQL 3.20中,臨時表的最大尺寸是record_buffer*16,因此如
果你正在使用這個版本,你必須增加record_buffer值。你也可以使用--big-tables選項啟動mysqld以總將
臨時表儲存在磁碟上,然而,這將影響許多複雜查詢的速度。
6 大多數做排序的請求分配一個排序緩衝區和一個或二個臨時檔案。
幾乎所有的語法分析和計算都在一家本地儲存器中完成。對小專案沒有記憶體開銷並且一般的較慢儲存器分配
和釋放被避免。記憶體僅為出乎意料的大字串分配(這用malloc()和free()完成)。
7 每個索引檔案只被開啟一次,並且資料檔案為每個併發執行的執行緒開啟一次。對每個併發執行緒,分配一個
表結構、對每列的列結構和大小為3 * n的一個緩衝區(這裡n是最大的行長度,不算BLOB列)。一個BLOB使用
5 ~ 8個位元組加上BLOB資料。
8 對每個有BLOB列的表,一個緩衝區動態地被擴大以便讀入更大的BLOB值。如果你掃描一個表,分配與最大
BLOB值一樣大的一個緩衝區。
9 對所有在用的表的表處理器被儲存在一個快取中並且作為一個FIFO管理。通常快取有64個入口。如果一個表同時被2個執行的執行緒使用,快取為此包含2個入口。
10 一個mysqladmin flush-tables命令關閉所有不在用的表並在當前執行的執行緒結束時,標記所有在用的表準備被關閉。這將有效地釋放大多數在用的記憶體。
ps和其他系統狀態程式可以報導mysqld使用很多記憶體。這可以是在不同的記憶體地址上的執行緒棧造成的。例如
,Solaris版本的ps將棧間未用的記憶體算作已用的記憶體。你可以透過用swap -s檢查可用交換區來驗證它。我
們用商業記憶體漏洞探查器測試了mysqld,因此應該有沒有記憶體漏洞。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-683169/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL記憶體使用MySql記憶體
- MySQL記憶體管理MySql記憶體
- mysql最大表記憶體MySql記憶體
- MySQL InnoDB記憶體配置MySql記憶體
- MySQL學習筆記---入門使用MySql筆記
- MySQL學習筆記-使用Navicat操作MySQL資料庫MySql筆記資料庫
- MySQL InnoDB的記憶體管理MySql記憶體
- MySql學習筆記MySql筆記
- MySQL學習記錄MySql
- 【Mysql學習】mysql的使用入門MySql
- 【Mysql 學習】mysql 的使用入門MySql
- 故障排除指南:MySQL執行記憶體不足怎麼辦?MySql記憶體
- MySQL入門--記憶體buffer poolMySql記憶體
- MYSQL的記憶體管理方法MySql記憶體
- MySQL記憶體執行緒獨享使用的方法MySql記憶體執行緒
- 【記錄】MySQL 學習筆記MySql筆記
- [記錄] MySQL 學習筆記MySql筆記
- 如何檢視MySQL資料庫佔多大記憶體,佔用太多記憶體怎麼辦?MySql資料庫記憶體
- AI晶片需要怎樣的記憶體?AI晶片記憶體
- Mysql學習筆記2--使用入門MySql筆記
- MySQL學習筆記2MySql筆記
- MySQL學習筆記:鎖MySql筆記
- Mysql Replication學習記錄MySql
- MySql學習筆記06MySql筆記
- 學習Mysql筆記(一)MySql筆記
- mysql學習筆記-1MySql筆記
- mysql學習筆記-2MySql筆記
- MySQL Events學習筆記MySql筆記
- mysql學習筆記3MySql筆記
- mysql記憶體引數分類大全MySql記憶體
- MySQL記憶體佔用計算公式MySql記憶體公式
- MySQL-37:記憶體臨時表MySql記憶體
- MySQL記憶體引數及調整MySql記憶體
- mysql臨時表和記憶體表MySql記憶體
- 探索MYSQL開啟大頁記憶體MySql記憶體
- Spark學習——記憶體管理Spark記憶體
- 記憶體分配策略學習記憶體
- MySQL記憶體管理,記憶體分配器和作業系統MySql記憶體作業系統