<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
        主站蜘蛛池模板: 免费国产成人高清在线观看麻豆| 免费播放特黄特色毛片| 亚洲av无码无在线观看红杏| 一级毛片aa高清免费观看| 男的把j放进女人下面视频免费| 亚洲欧洲中文日韩久久AV乱码 | 在线看免费观看AV深夜影院| 亚洲av成人无码久久精品| 免费av片在线观看网站| 亚洲精品综合一二三区在线| 一区二区三区观看免费中文视频在线播放 | 一区二区三区亚洲| 日本高清在线免费| 亚洲影视自拍揄拍愉拍| 免费无码黄网站在线观看| 精品视频免费在线| 欧美三级在线电影免费| 亚洲电影免费在线观看| 亚洲香蕉免费有线视频| 亚洲国产精品自在线一区二区| 国产成人一区二区三区视频免费| 久久夜色精品国产噜噜噜亚洲AV| 最近免费中文字幕高清大全| 国产精品亚洲综合久久| 亚洲国产成人VA在线观看| a级毛片在线视频免费观看| 亚洲精品视频在线观看免费| 久久国产乱子精品免费女| 亚洲精品成人网站在线播放| 日韩黄色免费观看| a级毛片在线视频免费观看| 亚洲国产视频网站| 国内精自视频品线六区免费| 亚洲色中文字幕在线播放| 国产精品亚洲综合一区| 亚洲一级片免费看| 亚洲狠狠ady亚洲精品大秀| 波多野结衣免费视频观看| 黄页免费在线观看| 亚洲男人的天堂网站| 永久免费AV无码网站在线观看|