<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          面試官: 知道MySQLde臨時(shí)表嗎?MySQL中還有臨時(shí)表?

          共 1275字,需瀏覽 3分鐘

           ·

          2020-10-07 04:47


          點(diǎn)擊上方「藍(lán)字」關(guān)注我們

          臨時(shí)表與內(nèi)存表并不是一致的。

          內(nèi)存表

          代表的使用Memory 引擎的表。在建立表的時(shí)候指定engine = memory .

          臨時(shí)表

          臨時(shí)表可以使用其他各種的引擎類型。比如我們所說的InnoDB.

          為什么要使用臨時(shí)表呢?

          為什么使用臨時(shí)表是由于這幾個(gè)特點(diǎn)。

          • 臨時(shí)表只能被創(chuàng)建它的session所能看見與使用,對(duì)其他線程不可見。
          • 臨時(shí)表與普通的表明可以相同,因?yàn)樵诖疟P上存儲(chǔ)的名字是不一樣的,內(nèi)存上顯示的也不一樣。
          • 同一個(gè)session會(huì)話中,臨時(shí)表與普通表存在,增刪改查語(yǔ)句是訪問的臨時(shí)表。
          • show tables 不顯示臨時(shí)表。
          • session 結(jié)束后,臨時(shí)表會(huì)被刪除。

          這樣的情景下,臨時(shí)表不擔(dān)心表重復(fù)的問題,并且不擔(dān)心數(shù)據(jù)刪除問題。臨時(shí)表有程序會(huì)自動(dòng)回收。

          臨時(shí)表名重復(fù)

          我們?cè)谇懊嫠f,臨時(shí)表屬于自己的session當(dāng)中的。

          數(shù)據(jù)庫(kù)的表示怎么存儲(chǔ)在磁盤上的呢?普通表是放在普通表文件的目錄下,臨時(shí)表的存儲(chǔ)是放在另外一個(gè)tmp的文件目錄下。

          臨時(shí)表的名字存在構(gòu)成也與臨時(shí)表不同,臨時(shí)表是在前綴的基礎(chǔ)上+線程id+順序的數(shù)字。

          數(shù)據(jù)庫(kù)除了在磁盤上維護(hù)這個(gè)關(guān)系外,還需要在內(nèi)存上進(jìn)行維護(hù)。

          • 普通表采用的table_def_key 是由庫(kù)名+表名 構(gòu)成。
          • 臨時(shí)表采用的table_deg_key 是由庫(kù)名+表名+servier_id+thread_id.

          臨時(shí)表與主備復(fù)制

          雖然是臨時(shí)表,但是我們?cè)趧h除臨時(shí)表的時(shí)候也會(huì)在binlog 日志中記錄刪除命令。

          這是為什么呢?

          如果binlog 格式= stament/mixed 的時(shí)候,我們?cè)谥鲙?kù)中執(zhí)行創(chuàng)建臨時(shí)表,然后執(zhí)行操作。

          以上內(nèi)容,如果不在binlog上記錄,在備庫(kù)上執(zhí)行就會(huì)出現(xiàn)臨時(shí)表丟失的問題。所以binlog在該模式下還是需要的。

          那row模式呢?這是不需要的。在row模式下知識(shí)記錄操作邏輯,不會(huì)出現(xiàn)這個(gè)問題。

          還有兩個(gè)個(gè)問題

          1. 執(zhí)行 drop table 表,會(huì)出現(xiàn)變形。
          drop?table?'teble_name'?/*gengrated by server */??有這個(gè)代表進(jìn)行修改過。

          這個(gè)命令是可以刪除多個(gè)表的,是row 格式的話 備庫(kù)上是沒有臨時(shí)表,所以需要語(yǔ)句的改寫 2. 主庫(kù)上不同線程創(chuàng)建的臨時(shí)表在備庫(kù)上怎么執(zhí)行?

          備庫(kù)上的日志線程是共享的。在記錄binlog的時(shí)候會(huì)記錄每個(gè)語(yǔ)句主庫(kù)執(zhí)行的線程id。

          • 在備庫(kù)上的table_def_Key 就是 庫(kù)名+表名+ 主庫(kù)上的server_id+thread_id.
          • 另外一個(gè)線程操作也是類似的。

          兩者最終的內(nèi)容還是不一樣的。

          你點(diǎn)的每個(gè)在看,我都認(rèn)真當(dāng)成了喜歡
          瀏覽 50
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  哪里能看毛片 | 人人妻人人操人人屌 | 俺去也三级 | 91爱爱官网 | 日韩一级欧美一级黄色大片 |