<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        MySQL如何創(chuàng)建和刪除臨時表_MySQL

        來源:懂視網(wǎng) 責編:小采 時間:2020-11-09 18:11:10
        文檔

        MySQL如何創(chuàng)建和刪除臨時表_MySQL

        MySQL如何創(chuàng)建和刪除臨時表_MySQL:bitsCN.com 1.介紹: MySQL臨時表,屬于session級別,當session退出時,臨時表被刪除。臨時表允許與其他表同名,并單獨維護在thd的結(jié)構(gòu)體中;因此,不同的session可以創(chuàng)建同名的臨時表,并且只操作自己擁有的臨時表; 創(chuàng)建臨時表的語法很簡單: r
        推薦度:
        導讀MySQL如何創(chuàng)建和刪除臨時表_MySQL:bitsCN.com 1.介紹: MySQL臨時表,屬于session級別,當session退出時,臨時表被刪除。臨時表允許與其他表同名,并單獨維護在thd的結(jié)構(gòu)體中;因此,不同的session可以創(chuàng)建同名的臨時表,并且只操作自己擁有的臨時表; 創(chuàng)建臨時表的語法很簡單: r

        bitsCN.com

        1.介紹:

        MySQL臨時表,屬于session級別,當session退出時,臨時表被刪除。臨時表允許與其他表同名,并單獨維護在thd的結(jié)構(gòu)體中;因此,不同的session可以創(chuàng)建同名的臨時表,并且只操作自己擁有的臨時表;

        創(chuàng)建臨時表的語法很簡單:

        root@test 03:26:44>show create table tmp1/G

        *************************** 1. row ***************************

        Table: tmp1

        Create Table: CREATE TEMPORARY TABLE `tmp1` (

        `a` int(11) NOT NULL AUTO_INCREMENT,

        `b` int(11) DEFAULT NULL,

        `c` int(11) DEFAULT NULL,

        PRIMARY KEY (`a`)

        ) ENGINE=InnoDB DEFAULT CHARSET=latin1

        1 row in set (0.00 sec)

        當創(chuàng)建臨時表后,會在tmp文件夾下生成兩個文件:

        #sql3e95_1a_0.frm

        #sql3e95_1a_0.ibd

        那么MySQL本身究竟是如何創(chuàng)建和刪除臨時表的呢?

        2.創(chuàng)建

        執(zhí)行SQL:

        CREATE TEMPORARY TABLE `tmp1` ( `a` int(11) NOT NULL AUTO_INCREMENT, `b` int(11) DEFAULT NULL, `c` int(11) DEFAULT NULL, PRIMARY KEY (`a`) );

        1)斷點:ysql_execute_command

        mysql_execute_command:

        2205 switch (lex->sql_command) {

        (gdb)

        2532 if (!(lex->create_info.options & HA_LEX_CREATE_TMP_TABLE))

        (gdb) p lex->create_info.options --------if語句里為false

        $2 = 1

        create_table_precheck------檢查是否具有創(chuàng)建表的權(quán)限,以及表名在全局鏈表上是否已存在(臨時表無需檢查)

        append_file_to_dir ------Fix names if symlinked tables

        if (select_lex->item_list.elements) -------------------當為create ....select這樣的語句時select_lex->item_list.elements為非0值,這里我們只考慮簡單的情況

        if ((result= new select_create))

        res= handle_select(thd, lex, result, 0);

        else

        (1)mysql_create_like_table ---------------create table like...類似的語句

        (2)mysql_create_table ---------------主要分析這個函數(shù)

        2)斷點:mysql_create_table

        mysql_create_table

        mysql_create_table_no_lock

        check_engine

        file = get_new_handler

        3842 set_table_default_charset(thd, create_info, (char*) db);

        3844 if (mysql_prepare_create_table(thd, create_info, alter_info,

        3854 path_length= build_tmptable_filename(thd, path, sizeof(path)); -----創(chuàng)建臨時表文件名:#sql{進程id}_{thread_id}_{當前線程的臨時表整數(shù)標識thd->tmp_table}

        3978 rea_create_table --------------------------------------------------------------------創(chuàng)建frm文件和ibd文件

        3986 open_temporary_table-------------------------------------------------------------打開臨時表

        (1)構(gòu)建table和table_share結(jié)構(gòu)體

        (2)將table結(jié)構(gòu)體加入到thd->temporary_tables鏈表中

        4009 error= write_create_table_bin_log----------------------------------------------寫入binlog

        3.刪除臨時表

        手動執(zhí)行 drop table tmp1

        mysql_execute_command

        case SQLCOM_DROP_TABLE:

        mysql_rm_table

        mysql_rm_table_part2

        for (table= tables; table; table= table->next_local)

        drop_temporary_table-----------------------------從thd->temporary_tables上查找臨時表

        調(diào)用close_temporary_table來關(guān)閉、刪除臨時表文件,并從thd->temporary_tables上刪除相應(yīng)節(jié)點

        if (!drop_temporary)-------------------------------當刪除的是非臨時表時,執(zhí)行下面的邏輯

        ----------------------------------------

        4. 當session退出時。

        看看堆棧:

        Breakpoint 16, rm_temporary_table (base=0xc8c560, path=0x1427c10 "/u01/mysql-5148.stock/tmp/#sql3e95_1d_0") at sql_base.cc:5634

        5634 bool rm_temporary_table(handlerton *base, char *path)

        (gdb)

        5641 strmov(ext= strend(path), reg_ext);

        (gdb) bt

        #0 rm_temporary_table (base=0xc8c560, path=0x1427c10 "/u01/mysql-5148.stock/tmp/#sql3e95_1d_0") at sql_base.cc:5641

        #1 0x00000000005f6eaa in close_temporary (table=0x1427030, free_share=true, delete_table=true) at sql_base.cc:1928

        #2 0x00000000005f725f in close_temporary_tables (thd=0x14065f0) at sql_base.cc:1549

        #3 0x0000000000592d9b in THD::cleanup (this=0x14065f0) at sql_class.cc:967

        #4 0x00000000005a3579 in unlink_thd (thd=0xc8c560) at mysqld.cc:1858

        #5 0x00000000005a35dc in one_thread_per_connection_end (thd=0xc8c560, put_in_cache=16) at mysqld.cc:1945

        #6 0x00000000005ac208 in handle_one_connection (arg=0x14065f0) at sql_connect.cc:1141

        #7 0x0000003e638064a7 in start_thread () from /lib64/libpthread.so.0

        #8 0x0000003e630d3c2d in clone () from /lib64/libc.so.6

        #9 0x0000000000000000 in ?? ()

        在session結(jié)束的時候,會調(diào)用THD::cleanup來做臨時表的清理工作

        摘自 記錄成長之路

        bitsCN.com

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        MySQL如何創(chuàng)建和刪除臨時表_MySQL

        MySQL如何創(chuàng)建和刪除臨時表_MySQL:bitsCN.com 1.介紹: MySQL臨時表,屬于session級別,當session退出時,臨時表被刪除。臨時表允許與其他表同名,并單獨維護在thd的結(jié)構(gòu)體中;因此,不同的session可以創(chuàng)建同名的臨時表,并且只操作自己擁有的臨時表; 創(chuàng)建臨時表的語法很簡單: r
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 日韩免费在线观看视频| 成人免费网站久久久| 精品无码人妻一区二区免费蜜桃| 亚洲精品无码久久久久去q| 一二三区免费视频 | 三年片在线观看免费大全| 亚洲小说图片视频| 成人福利免费视频| 在线精品亚洲一区二区| 韩国18福利视频免费观看| 特级无码毛片免费视频| 亚洲国产人成中文幕一级二级| 精品国产污污免费网站入口在线| 国产亚洲无线码一区二区| 男人j进入女人j内部免费网站| 久久久久亚洲AV无码专区体验| 欧洲乱码伦视频免费| 日本亚洲欧美色视频在线播放| 亚洲精品视频在线观看你懂的| 免费久久人人爽人人爽av| 亚洲理论片在线中文字幕| 在线中文高清资源免费观看| 四虎精品成人免费视频| 久久精品国产99精品国产亚洲性色| 最近的中文字幕大全免费8| 亚洲综合av一区二区三区不卡| 国产免费小视频在线观看| 成人免费无码H在线观看不卡| 久久精品国产亚洲AV电影| 大香人蕉免费视频75| 中文字幕无线码中文字幕免费 | 亚洲永久精品ww47| 亚洲免费精彩视频在线观看| 亚洲制服丝袜第一页| 亚洲Av无码乱码在线播放| 99热这里只有精品6免费| 亚洲精品无码专区在线播放| 亚洲女同成av人片在线观看| 性感美女视频免费网站午夜| a级毛片黄免费a级毛片| 亚洲乱色伦图片区小说|