国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

mysql內存參數分類合集

2024-07-24 12:32:15
字體:
來源:轉載
供稿:網友
       內存參數:
  
      存儲引擎/共享
      日志緩沖區,緩沖區池
 
      innodb_buffer_pool_size
      innodb_additional_mem_pool_size
      innodb_log_buffer_size 服務器/共享
      查詢調整緩存
      線程高速絡緩存
 
query_cache
table_cahce
table_definition_cache
 
連接/會話
排序緩沖區,讀取緩沖區,臨時表
 
binlog_cache_size
read_buffer_size
read_rnd_buffer_size
join_buffer_size
sort_buffer_size
tmp_table_size
thread_cache_size
bulk_insert_buffer_size
net_buffer_length
thread_stack
  
*.線程獨享內存
*.全局共享內存
全局共享內存類似ORACLE的系統全局區SGA,線程獨享內存類似ORACLE的進程全局區PGA
 
 
一、線程獨享內存
 
在MySQL中,線程獨享內存主要用于各客戶端連接線程存儲各種操作的獨享數據,如線程棧信息,分組排序操作,數據讀寫緩沖,結果集暫存等等,而且大多數可以通過相關參數來控制內存的使用量。
 
* Join操作使用內存(join_buffer_size):
應用程序經常會出現一些兩表(或多表)Join的操作需求,MySQL在完成某些Join需求的時候(all/index join),為了減少參與Join的“被驅動表”的讀取次數以提高性能,需要使用到Join Buffer來協助完成Join操作
(具體Join實現算法請參考:MySQL中的 Join 基本實現原理)。當Join Buffer太小,MySQL 不會將該Buffer存入磁盤文件,而是先將Join Buffer中的結果集與需要Join的表進行Join操作,然后清空Join Buffer中的數據,
繼續將剩余的結果集寫入此Buffer中,如此往復。這勢必會造成被驅動表需要被多次讀取,成倍增加IO訪問,降低效率。
什么時候會用到?
當查詢必須連接兩個表(或多個)的數據集并且不能使用索引時,這個緩沖區會被用到。這個緩沖區專門為每個線程的無索引鏈接操作準備的。
使用確認:
可以通過查詢計劃中的Extra列的值為Using join bufer來證實使用了和這個緩沖區。
>explain select * from user1;
+------+-------------+-------+-------+---------------+------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+------+-------------+-------+-------+---------------+------+---------+------+------+-------------+
| 1 | SIMPLE | user1 | index | NULL | name | 78 | NULL | 3 | Using index |
+------+-------------+-------+-------+---------------+------+---------+------+------+-------------+
Global Session,Dynamic,Default 128K 各版本平臺最大值不一樣
推薦配置:8M(內存足夠的情況下),默認(內存緊張的情況)
優化建議:有一種說法是增加這個緩沖區的大小不會加快全連接操作的速度。目前我沒有實驗證實。
 
* 批量插入暫存使用內存(bulk_insert_buffer_size):
當我們使用如 insert … values(…),(…),(…)… 的方式進行批量插入的時候,MySQL會先將提交的數據放如一個緩存空間中,當該緩存空間被寫滿或者提交完所有數據之后,MySQL才會一次性將該緩存空間中的數據寫入數據庫并清空緩存。
此外,當我們進行 LOAD DATA INFILE操作來將文本文件中的數據Load進數據庫的時候,同樣會使用到此緩沖區。
Global Session,Dynamic,Default 8M
推薦配置:默認 8M
* 臨時表使用內存(tmp_table_size):
當我們進行一些特殊操作如需要使用臨時表才能完成的Order By,Group By 等等,MySQL可能需要使用到臨時表。當我們的臨時表較小(小于tmp_table_size 參數所設置的大小)的時候,MySQL會將臨時表創建成內存臨時表,
只有當tmp_table_size所設置的大小無法裝下整個臨時表的時候,MySQL才會將該表創建成MyISAM存儲引擎的表存放在磁盤上。不過,當另一個系統參數 max_heap_table_size 的大小還小于 tmp_table_size 的時候,
MySQL將使用 max_heap_table_size 參數所設置大小作為最大的內存臨時表大小,而忽略tmp_table_size 所設置的值。而且 tmp_table_size 參數從 MySQL 5.1.2 才開始有,之前一直使用 max_heap_table_size。
誰小誰生效.另外還有一個參數max_tmp_tables,沒有使用
tmp_table_size
Global Session,Dynamic,Default 16M
推薦配置:64M
max_heap_table_size
Global Session,Dynamic,Default 8M
This variable sets the maximum size to which user-created MEMORY tables are permitted to grow
這個變量定義了MEMORY存儲引擎表的最大容量。
 
二、全局共享內存
全局共享內則主要是MySQL Instance以及底層存儲引擎用來暫存各種全局運算及可共享的暫存信息,如
存儲查詢緩存的 Query Cache,
緩存連接線程的 Thread Cache。
 
* MyISAM索引緩存 Key Buffer(key_buffer_size):
MyISAM 索引緩存將MyISAM表的索引信息(.MYI文件)緩存在內存中,以提高其訪問性能。這個緩存可以說是影響MyISAM存儲引擎性能的最重要因素之一了,通過 key_buffere_size 設置可以使用的最大內存空間。
注意:即使運行一個全部采用innodb的模式,仍需要定義一個索引碼緩沖區,因為MYSQL元信息與MyISAM定義相同。
Global ,Dynamic,Default 8M
推薦配置:默認 8M
如何確認key_buffer_size不夠用?
使用show full proceslist的State列中,值Repairing the keycache是一個明顯的指標,它指出當前索引碼緩沖區大小不足以執行當前運行的SQL語句。這將導致額外的磁盤I/O開銷。
 

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 棋牌| 伊春市| 大宁县| 府谷县| 烟台市| 和田市| 安阳县| 夹江县| 贵南县| 新化县| 石景山区| 喀喇| 灌云县| 界首市| 葫芦岛市| 个旧市| 原阳县| 土默特右旗| 阿克陶县| 呈贡县| 彰武县| 旺苍县| 开化县| 清水县| 南澳县| 含山县| 淮安市| 芮城县| 顺平县| 浙江省| 怀宁县| 城市| 永寿县| 会东县| 田阳县| 阿坝| 易门县| 南部县| 惠东县| 巴南区| 汾阳市|