日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

mysql 临时表_第05问:MySQL 在处理临时结果集时,内部临时表会使用多少内存?...

發(fā)布時(shí)間:2025/3/15 数据库 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 临时表_第05问:MySQL 在处理临时结果集时,内部临时表会使用多少内存?... 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

問(wèn)題:

MySQL 在處理臨時(shí)結(jié)果集(UNION 運(yùn)算 / 聚合運(yùn)算等)時(shí),會(huì)用到內(nèi)部臨時(shí)表(internal temporary table)。

那么內(nèi)部臨時(shí)表會(huì)使用多少內(nèi)存呢?

實(shí)驗(yàn):

我們先創(chuàng)建一個(gè)測(cè)試用的數(shù)據(jù)庫(kù),

然后準(zhǔn)備好數(shù)據(jù),

我們使用一個(gè)帶 UNION 的子表,使執(zhí)行計(jì)劃會(huì)使用內(nèi)部臨時(shí)表:

可以看到執(zhí)行計(jì)劃確實(shí)使用了臨時(shí)表:

下面我們另起一個(gè) session,用 performance_schema 對(duì)內(nèi)存進(jìn)行觀察:

在主 session 中,探查其連接號(hào),并找到線程號(hào):

在 performance_schema 中,確認(rèn)其內(nèi)存分配的統(tǒng)計(jì)初始狀態(tài):

在主 session 中執(zhí)行 SQL:

在 performance_schema 中,查看其內(nèi)存分配:

可知在這個(gè) SQL 的處理過(guò)程中,總共分配了 4M 多的內(nèi)存用于內(nèi)部臨時(shí)表:

我們都知道內(nèi)存臨時(shí)表是 memory(heap) 引擎格式的表,那我們手工建一個(gè)顯式的內(nèi)存表,應(yīng)當(dāng)和內(nèi)存臨時(shí)表使用的內(nèi)存相同,來(lái)試驗(yàn)一下。

在主 session 中創(chuàng)建一張內(nèi)存表,將數(shù)據(jù)插入到內(nèi)存表中:

觀察 performance_schema 可知:內(nèi)存表駐留在內(nèi)存里的字節(jié)數(shù)與之前臨時(shí)表使用的字節(jié)數(shù)相同。

結(jié)論

我們通過(guò) performance_schema 觀察了 memory 引擎的內(nèi)存分配,由此推算了內(nèi)部臨時(shí)表的內(nèi)存占用情況。

MySQL 在其他元數(shù)據(jù)中,諸如 information_schema.INNODB_TEMP_TABLE_INFO 中,并不展示內(nèi)部臨時(shí)表的信息,如圖:

另外值得注意的是:memory 引擎會(huì)多劃分出不少空間,比如本例中我們的數(shù)據(jù)是 300025 行 * 4 字節(jié) =~ 1.2M,而引擎分出了 4M 多的內(nèi)存來(lái)進(jìn)行存儲(chǔ)。

因此如果進(jìn)行估算時(shí),需要將數(shù)據(jù)量乘以一個(gè)較大的系數(shù),才能準(zhǔn)確估算。

小貼士:

我們是第二次用到了 dbdeployer,介紹一下其身世:

dbdeployer 的前身是著名的 mysql-sandbox,是著名博主 Giuseppe Maxia 的扛鼎之作(http://datacharmer.blogspot.com),可以極其方便地搭建 MySQL 多種架構(gòu)的測(cè)試環(huán)境,命令簡(jiǎn)單優(yōu)雅。

今后在實(shí)驗(yàn)中,我們會(huì)多次用到 dbdeployer,或者使用 MySQL 容器進(jìn)行快速搭建和試驗(yàn)。


關(guān)于 MySQL 的技術(shù)內(nèi)容,你們還有什么想知道的嗎?趕緊留言告訴小編吧!

總結(jié)

以上是生活随笔為你收集整理的mysql 临时表_第05问:MySQL 在处理临时结果集时,内部临时表会使用多少内存?...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。