真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mysql怎么用臨時(shí)表 mysql如何創(chuàng)建臨時(shí)表

MySQL如何使用臨時(shí)表

解決辦法:

創(chuàng)新互聯(lián)是一家專注于網(wǎng)站建設(shè)、成都做網(wǎng)站與策劃設(shè)計(jì),魏都網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:魏都等地區(qū)。魏都做網(wǎng)站價(jià)格咨詢:18980820575

當(dāng)臨時(shí)表不存在時(shí),將查詢結(jié)果保存在臨時(shí)表中:

CREATE TEMPORARY TABLE tmp_table SELECT * FROM table_name;

我的具體代碼是

CREATE temporary table tmp

(SELECT t1.pid a, t1.pname b,t2.pid c, t2.pdescribe d FROM

(SELECT pid,pname FROM admin_advert_place WHERE pid IN (3,4,5,6,7)) t1 LEFT JOIN

(SELECT pid,pdescribe FROM admin_advert_place

WHERE pgid IN (6,7,8)) t2 ON t1.pid = t2.pid)

MySQL中的臨時(shí)表使用方法講解

當(dāng)工作在非常大的表上時(shí) 你可能偶爾需要運(yùn)行很多查詢獲得一個(gè)大量數(shù)據(jù)的小的子集 不是對整個(gè)表運(yùn)行這些查詢 而是讓MySQL每次找出所需的少數(shù)記錄 將記錄選擇到一個(gè)臨時(shí)表可能更快些 然后多這些表運(yùn)行查詢 創(chuàng)建臨時(shí)表很容易 給正常的CREATE TABLE語句加上TEMPORARY關(guān)鍵字 CREATE TEMPORARY TABLE tmp_table (name VARCHAR( ) NOT NULL value INTEGER NOT NULL)臨時(shí)表將在你連接MySQL期間存在 當(dāng)你斷開時(shí) MySQL將自動刪除表并釋放所用的空間 當(dāng)然你可以在仍然連接的時(shí)候刪除表并釋放空間 DROP TABLE tmp_table如果在你創(chuàng)建名為tmp_table臨時(shí)表時(shí)名為tmp_table的表在數(shù)據(jù)庫中已經(jīng)存在 臨時(shí)表將有必要屏蔽(隱藏)非臨時(shí)表tmp_table 如果你聲明臨時(shí)表是一個(gè)HEAP表 MySQL也允許你指定在內(nèi)存中創(chuàng)建它 CREATE TEMPORARY TABLE tmp_table (name VARCHAR( ) NOT NULL value INTEGER NOT NULL) TYPE = HEAP因?yàn)镠EAP表存儲在內(nèi)存中 你對它運(yùn)行的查詢可能比磁盤上的臨時(shí)表快些 然而 HEAP表與一般的表有些不同 且有自身的限制 詳見MySQL參考手冊 正如前面的建議 你應(yīng)該測試臨時(shí)表看看它們是否真的比對大量數(shù)據(jù)庫運(yùn)行查詢快 如果數(shù)據(jù)很好地索引 臨時(shí)表可能一點(diǎn)不快 lishixinzhi/Article/program/MySQL/201311/29492

mysql是怎樣使用內(nèi)部臨時(shí)表的

我們?nèi)允褂?實(shí)驗(yàn) 05?中的環(huán)境,略去準(zhǔn)備數(shù)據(jù)的過程。

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

主會話線程號為 29,

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

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

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

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

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

查看語句的特征值:

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

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

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

重做實(shí)驗(yàn),略過。

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

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

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

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

來看看這些寫入操作的特征,該方法我們在?實(shí)驗(yàn) 03?使用過:

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

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

結(jié)論:

我們可以看到,

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

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

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

mysql之臨時(shí)表

臨時(shí)表:一種特殊的表,用來存儲查詢的中間結(jié)果,并且會隨著當(dāng)前連接的結(jié)束而自動刪除。mysql中有2種臨時(shí)表,分別是內(nèi)部臨時(shí)表和外部臨時(shí)表。

外部臨時(shí)表關(guān)鍵字:TEMPORARY 。

外部臨時(shí)表特征:

1、關(guān)鍵字TEMPORARY

2、臨時(shí)表創(chuàng)建完成之后,只有當(dāng)前可見,其他連接是看不到的,具有連接隔離性

3、臨時(shí)表在當(dāng)前連接結(jié)束之后,會自動刪除。

臨時(shí)表可以存儲在內(nèi)存和磁盤。


網(wǎng)頁題目:mysql怎么用臨時(shí)表 mysql如何創(chuàng)建臨時(shí)表
本文網(wǎng)址:http://weahome.cn/article/hgijii.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部