mysql中臨時表怎么查 mysql臨時表怎么使用

mysql 臨時表的建立和用途

我們?nèi)匀皇褂脙蓚€會話,一個會話 run,用于運行主 SQL;另一個會話 ps,用于進行 performance_schema 的觀察:

創(chuàng)新互聯(lián)主要從事網(wǎng)頁設計、PC網(wǎng)站建設(電腦版網(wǎng)站建設)、wap網(wǎng)站建設(手機版網(wǎng)站建設)、自適應網(wǎng)站建設、程序開發(fā)、網(wǎng)站優(yōu)化、微網(wǎng)站、小程序開發(fā)等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們在互聯(lián)網(wǎng)網(wǎng)站建設行業(yè)積累了豐富的網(wǎng)站設計制作、網(wǎng)站設計、網(wǎng)站設計、網(wǎng)絡營銷經(jīng)驗,集策劃、開發(fā)、設計、營銷、管理等多方位專業(yè)化運作于一體。

主會話線程號為 29,

將 performance_schema 中的統(tǒng)計量重置,

臨時表的表大小限制取決于參數(shù)? tmp_table_size 和 max_heap_table_size 中較小者,我們實驗中以設置 max_heap_table_size 為例。

我們將會話級別的臨時表大小設置為 2M(小于上次實驗中臨時表使用的空間),執(zhí)行使用臨時表的 SQL:

查看內(nèi)存的分配記錄:

會發(fā)現(xiàn)內(nèi)存分配略大于 2M,我們猜測臨時表會比配置略多一點消耗,可以忽略。

查看語句的特征值:

可以看到語句使用了一次需要落磁盤的臨時表。

那么這張臨時表用了多少的磁盤呢?

我們開啟 performance_schema 中 waits 相關(guān)的統(tǒng)計項:

重做實驗,略過。

再查看 performance_schema 的統(tǒng)計值:

可以看到幾個現(xiàn)象:

1. 臨時表空間被寫入了 7.92MiB 的數(shù)據(jù)。

2. 這些數(shù)據(jù)是語句寫入后,慢慢逐漸寫入的。

來看看這些寫入操作的特征,該方法我們在?實驗 03?使用過:

可以看到寫入的線程是 page_clean_thread,是一個刷臟操作,這樣就能理解數(shù)據(jù)為什么是慢慢寫入的。

也可以看到每個 IO 操作的大小是 16K,也就是刷數(shù)據(jù)頁的操作。

結(jié)論:

我們可以看到,

1. MySQL 會基本遵守 max_heap_table_size 的設定,在內(nèi)存不夠用時,直接將表轉(zhuǎn)到磁盤上存儲。

2. 由于引擎不同(內(nèi)存中表引擎為 heap,磁盤中表引擎則跟隨 internal_tmp_disk_storage_engine 的配置),本次實驗寫磁盤的數(shù)據(jù)量和?實驗 05?中使用內(nèi)存的數(shù)據(jù)量不同。

3. 如果臨時表要使用磁盤,表引擎配置為 InnoDB,那么即使臨時表在一個時間很短的 SQL 中使用,且使用后即釋放,釋放后也會刷臟頁到磁盤中,消耗部分 IO。

如何在mysql中把查詢結(jié)果輸出到臨時表中

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

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

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

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

mysql怎么把固定的幾個字符串,轉(zhuǎn)成列的形式作為臨時表查詢

db2數(shù)據(jù)庫 有個values函數(shù)可用于你說的這種操作,但是mysql本身是 沒有這樣的函數(shù)的。

下面是取巧的一種寫法,也能得到你想要的數(shù)據(jù)。如圖:

select?

trim(substring_index(substring_index(a.num,',',b.help_topic_id?+?1),','?,-?1))?AS?numb

from?(

select?

'39982665399,39023431098,39764974481,39055572973,39897342743,40127675336,40174795679'?as?num?

from?dual?)?a?

JOIN?apsc.help_topic?b?ON?b.help_topic_id?(length(a.num)?-?length(?REPLACE(a.num,?',',?'')?)?+?1?)

希望能幫到你!

本文標題:mysql中臨時表怎么查 mysql臨時表怎么使用
文章路徑:http://muchs.cn/article16/dohddgg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、網(wǎng)站內(nèi)鏈、關(guān)鍵詞優(yōu)化、手機網(wǎng)站建設、網(wǎng)站建設、App設計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設計公司