最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL內(nèi)存使用之線程獨(dú)享介紹

 更新時(shí)間:2014年12月01日 10:38:13   投稿:junjie  
這篇文章主要介紹了MySQL內(nèi)存使用之線程獨(dú)享介紹,線程獨(dú)享內(nèi)存主要用于各客戶端連接線程存儲(chǔ)各種操作的獨(dú)享數(shù)據(jù),如線程棧信息,分組排序操作,數(shù)據(jù)讀寫緩沖,結(jié)果集暫存等等,而且大多數(shù)可以通過相關(guān)參數(shù)來控制內(nèi)存的使用量,需要的朋友可以參考下

前言

在 MySQL 中,線程獨(dú)享內(nèi)存主要用于各客戶端連接線程存儲(chǔ)各種操作的獨(dú)享數(shù)據(jù),如線程棧信息,分組排序操作,數(shù)據(jù)讀寫緩沖,結(jié)果集暫存等等,而且大多數(shù)可以通過相關(guān)參數(shù)來控制內(nèi)存的使用量。

線程棧信息使用內(nèi)存(thread_stack)

主要用來存放每一個(gè)線程自身的標(biāo)識(shí)信息,如線程id,線程運(yùn)行時(shí)基本信息等等,我們可以通過 thread_stack 參數(shù)來設(shè)置為每一個(gè)線程棧分配多大的內(nèi)存。

排序使用內(nèi)存(sort_buffer_size)

MySQL 用此內(nèi)存區(qū)域進(jìn)行排序操作(filesort),完成客戶端的排序請(qǐng)求。當(dāng)我們?cè)O(shè)置的排序區(qū)緩存大小無法滿足排序?qū)嶋H所需內(nèi)存的時(shí)候,MySQL 會(huì)將數(shù)據(jù)寫入磁盤文件來完成排序。由于磁盤和內(nèi)存的讀寫性能完全不在一個(gè)數(shù)量級(jí),所以sort_buffer_size參數(shù)對(duì)排序操作的性能影響絕對(duì)不可小視。經(jīng)常使用索引來完成排序操作。

Join操作使用內(nèi)存(join_buffer_size)

應(yīng)用程序經(jīng)常會(huì)出現(xiàn)一些兩表(或多表)Join的操作需求,MySQL在完成某些 Join 需求的時(shí)候(all/index join),為了減少參與Join的“被驅(qū)動(dòng)表”的讀取次數(shù)以提高性能,需要使用到 Join Buffer 來協(xié)助完成 Join操作。當(dāng) Join Buffer 太小,MySQL 不會(huì)將該 Buffer 存入磁盤文件,而是先將Join Buffer中的結(jié)果集與需要 Join 的表進(jìn)行 Join 操作,然后清空 Join Buffer 中的數(shù)據(jù),繼續(xù)將剩余的結(jié)果集寫入此 Buffer 中,如此往復(fù)。這勢(shì)必會(huì)造成被驅(qū)動(dòng)表需要被多次讀取,成倍增加 IO 訪問,降低效率。

順序讀取數(shù)據(jù)緩沖區(qū)使用內(nèi)存(read_buffer_size)

這部分內(nèi)存主要用于當(dāng)需要順序讀取數(shù)據(jù)的時(shí)候,如無法使用索引的情況下的全表掃描,全索引掃描等。在這種時(shí)候,MySQL 按照數(shù)據(jù)的存儲(chǔ)順序依次讀取數(shù)據(jù)塊,每次讀取的數(shù)據(jù)快首先會(huì)暫存在read_buffer_size中,當(dāng) buffer 空間被寫滿或者全部數(shù)據(jù)讀取結(jié)束后,再將buffer中的數(shù)據(jù)返回給上層調(diào)用者,以提高效率。

隨機(jī)讀取數(shù)據(jù)緩沖區(qū)使用內(nèi)存(read_rnd_buffer_size)

和順序讀取相對(duì)應(yīng),當(dāng) MySQL 進(jìn)行非順序讀?。S機(jī)讀?。?shù)據(jù)塊的時(shí)候,會(huì)利用這個(gè)緩沖區(qū)暫存讀取的數(shù)據(jù)。如根據(jù)索引信息讀取表數(shù)據(jù),根據(jù)排序后的結(jié)果集與表進(jìn)行Join等等??偟膩碚f,就是當(dāng)數(shù)據(jù)塊的讀取需要滿足一定的順序的情況下,MySQL 就需要產(chǎn)生隨機(jī)讀取,進(jìn)而使用到 read_rnd_buffer_size 參數(shù)所設(shè)置的內(nèi)存緩沖區(qū)。

連接信息及返回客戶端前結(jié)果集暫存使用內(nèi)存(net_buffer_size)

這部分用來存放客戶端連接線程的連接信息和返回客戶端的結(jié)果集。當(dāng) MySQL 開始產(chǎn)生可以返回的結(jié)果集,會(huì)在通過網(wǎng)絡(luò)返回給客戶端請(qǐng)求線程之前,會(huì)先暫存在通過 net_buffer_size 所設(shè)置的緩沖區(qū)中,等滿足一定大小的時(shí)候才開始向客戶端發(fā)送,以提高網(wǎng)絡(luò)傳輸效率。不過,net_buffer_size 參數(shù)所設(shè)置的僅僅只是該緩存區(qū)的初始化大小,MySQL 會(huì)根據(jù)實(shí)際需要自行申請(qǐng)更多的內(nèi)存以滿足需求,但最大不會(huì)超過 max_allowed_packet 參數(shù)大小。

批量插入暫存使用內(nèi)存(bulk_insert_buffer_size)

當(dāng)我們使用如 insert … values(…),(…),(…)… 的方式進(jìn)行批量插入的時(shí)候,MySQL 會(huì)先將提交的數(shù)據(jù)放如一個(gè)緩存空間中,當(dāng)該緩存空間被寫滿或者提交完所有數(shù)據(jù)之后,MySQL 才會(huì)一次性將該緩存空間中的數(shù)據(jù)寫入數(shù)據(jù)庫并清空緩存。此外,當(dāng)我們進(jìn)行 LOAD DATA INFILE 操作來將文本文件中的數(shù)據(jù) Load 進(jìn)數(shù)據(jù)庫的時(shí)候,同樣會(huì)使用到此緩沖區(qū)。

臨時(shí)表使用內(nèi)存(tmp_table_size)

當(dāng)我們進(jìn)行一些特殊操作如需要使用臨時(shí)表才能完成的 Order By,Group By 等等,MySQL 可能需要使用到臨時(shí)表。當(dāng)我們的臨時(shí)表較?。ㄐ∮?tmp_table_size 參數(shù)所設(shè)置的大小)的時(shí)候,MySQL 會(huì)將臨時(shí)表創(chuàng)建成內(nèi)存臨時(shí)表,只有當(dāng) tmp_table_size 所設(shè)置的大小無法裝下整個(gè)臨時(shí)表的時(shí)候,MySQL 才會(huì)將該表創(chuàng)建成 MyISAM 存儲(chǔ)引擎的表存放在磁盤上。不過,當(dāng)另一個(gè)系統(tǒng)參數(shù) max_heap_table_size 的大小還小于 tmp_table_size 的時(shí)候,MySQL 將使用 max_heap_table_size 參數(shù)所設(shè)置大小作為最大的內(nèi)存臨時(shí)表大小,而忽略 tmp_table_size 所設(shè)置的值。而且 tmp_table_size 參數(shù)從 MySQL 5.1.2 才開始有,之前一直使用 max_heap_table_size。

總結(jié)

上面所列舉的 MySQL 線程獨(dú)享內(nèi)存僅僅只是所有線程獨(dú)享內(nèi)存中的部分,并不是全部,選擇的原則是可能對(duì) MySQL 的性能產(chǎn)生較大的影響,且可以通過系統(tǒng)參數(shù)進(jìn)行調(diào)節(jié)。

由于以上內(nèi)存都是線程獨(dú)享,極端情況下的內(nèi)存總體使用量將是所有連接線程的總倍數(shù)。所以各位朋友在設(shè)置過程中一定要謹(jǐn)慎,切不可為了提升性能就盲目的增大各參數(shù)值,避免因?yàn)閮?nèi)存不夠而產(chǎn)生 Out Of Memory 異?;蛘呤菄?yán)重的 Swap 交換反而降低整體性能。

相關(guān)文章

  • 修改MySQL密碼的四種方法總結(jié)(適合初學(xué)者!)

    修改MySQL密碼的四種方法總結(jié)(適合初學(xué)者!)

    在日常使用數(shù)據(jù)庫的過程中,難免會(huì)遇到需要修改賬號(hào)密碼的情景,比如密碼太簡單需要修改、密碼過期需要修改、忘記密碼需要修改等,下面這篇文章主要給大家介紹了關(guān)于修改MySQL密碼的四種方法,介紹的方法非常適合初學(xué)者,需要的朋友可以參考下
    2022-08-08
  • SQL執(zhí)行步驟的具體分析

    SQL執(zhí)行步驟的具體分析

    這篇文章主要介紹了SQL執(zhí)行步驟的具體分析的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解掌握SQL是如何執(zhí)行的,需要的朋友可以參考下
    2017-10-10
  • MySQL從MyISAM轉(zhuǎn)換成InnoDB錯(cuò)誤與常用解決辦法

    MySQL從MyISAM轉(zhuǎn)換成InnoDB錯(cuò)誤與常用解決辦法

    由于一些程序的要求,需要MyISAM數(shù)據(jù)引擎或InnoDB,下面是具體的解決方法,經(jīng)測(cè)試偶爾會(huì)出現(xiàn)一些問題。
    2011-05-05
  • mysql隔離級(jí)別詳解及示例

    mysql隔離級(jí)別詳解及示例

    經(jīng)常提到數(shù)據(jù)庫的事務(wù),那你知道數(shù)據(jù)庫還有事務(wù)隔離的說法嗎,本文主要介紹了mysql的四種隔離級(jí)別,具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-09-09
  • 利用mysql的inet_aton()和inet_ntoa()函數(shù)存儲(chǔ)IP地址的方法分享

    利用mysql的inet_aton()和inet_ntoa()函數(shù)存儲(chǔ)IP地址的方法分享

    當(dāng)前很多應(yīng)用都適用字符串char(15)來存儲(chǔ)IP地址(占用16個(gè)字節(jié)),利用inet_aton()和inet_ntoa()函數(shù),來存儲(chǔ)IP地址效率很高,適用unsigned int 就可以滿足需求,不需要使用bigint,只需要4個(gè)字節(jié),節(jié)省存儲(chǔ)空間,同時(shí)效率也高很多
    2012-03-03
  • 聊聊MySQL事務(wù)的特性和隔離級(jí)別

    聊聊MySQL事務(wù)的特性和隔離級(jí)別

    這篇文章主要介紹了MySQL事務(wù)的特性和隔離級(jí)別的相關(guān)資料,幫助大家粗略的認(rèn)識(shí)下MySQL 事務(wù)的相關(guān)知識(shí),感興趣的朋友可以了解下
    2020-09-09
  • Mysql存儲(chǔ)過程、觸發(fā)器、事件調(diào)度器使用入門指南

    Mysql存儲(chǔ)過程、觸發(fā)器、事件調(diào)度器使用入門指南

    存儲(chǔ)過程(Stored Procedure)是一種在數(shù)據(jù)庫中存儲(chǔ)復(fù)雜程序的數(shù)據(jù)庫對(duì)象。為了完成特定功能的SQL語句集,經(jīng)過編譯創(chuàng)建并保存在數(shù)據(jù)庫中,本文給大家介紹Mysql存儲(chǔ)過程、觸發(fā)器、事件調(diào)度器使用入門指南,感興趣的朋友一起看看吧
    2022-01-01
  • mysql實(shí)現(xiàn)向某個(gè)字段前或后添加字符

    mysql實(shí)現(xiàn)向某個(gè)字段前或后添加字符

    這篇文章主要介紹了mysql實(shí)現(xiàn)向某個(gè)字段前或后添加字符,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • SQL insert into語句寫法講解

    SQL insert into語句寫法講解

    這篇文章主要介紹了SQL insert into語句寫法講解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • MySQL數(shù)據(jù)庫備份以及常用備份工具集合

    MySQL數(shù)據(jù)庫備份以及常用備份工具集合

    數(shù)據(jù)庫備份種類按照數(shù)據(jù)庫大小備份,有四種類型,分別應(yīng)用于不同場(chǎng)合。本文將MySQL 數(shù)據(jù)庫備份種類以及常用備份工具進(jìn)行匯總,方便大家學(xué)習(xí)。
    2015-08-08

最新評(píng)論

泗阳县| 浮山县| 寿宁县| 安塞县| 乃东县| 梁山县| 定襄县| 定日县| 北票市| 靖安县| 汶川县| 房山区| 临城县| 吴江市| 固阳县| 无锡市| 河间市| 隆德县| 山西省| 门头沟区| 军事| 交口县| 阳城县| 瑞丽市| 拉萨市| 西藏| 新乡县| 含山县| 宜阳县| 呼伦贝尔市| 忻城县| 七台河市| 长阳| 龙门县| 塔河县| 盐源县| 渑池县| 康保县| 景德镇市| 阿克| 长顺县|