Mysql 之 MERGE 存儲引擎

来源:https://www.cnblogs.com/eline2018/archive/2019/02/12/10366549.html
-Advertisement-
Play Games

MERGE 存儲引擎把一組 MyISAM 數據表當做一個邏輯單元來對待,讓我們可以同時對他們進行查詢。構成一個 MERGE 數據表結構的各成員 MyISAM 數據表必須具有完全一樣的表結構。每一個成員數據表的數據列必須按照同樣的順序定義同樣的名字和類型,索引也必須按照同樣的順序和同樣的方式定義。假設 ...


  MERGE 存儲引擎把一組 MyISAM 數據表當做一個邏輯單元來對待,讓我們可以同時對他們進行查詢。構成一個 MERGE 數據表結構的各成員 MyISAM 數據表必須具有完全一樣的表結構。每一個成員數據表的數據列必須按照同樣的順序定義同樣的名字和類型索引也必須按照同樣的順序和同樣的方式定義。假設你有幾個日誌數據表,他們內容分別是這幾年來每一年的日誌記錄項,他們的定義都是下麵這樣,YY 代表年份

CREATE TABLE log_YY ( 
    dt DATETIME NOT NULL, 
    info VARCHAR(100) NOT NULL, 
    INDEX (dt) 
) ENGINE = MyISAM; 

  假設日誌數據表的當前集合包括 log_2004、log_2005、log_2006、log_2007 ,而你可以創建一個如下所示的 MERGE 數據表把他們歸攏為一個邏輯單元:

CREATE TABLE log_merge ( 
    dt DATETIME NOT NULL, 
    info VARCHAR(100) NOT NULL, 
    INDEX(dt) 
) ENGINE = MERGE UNION = (log_2004, log_2005, log_2006, log_2007);

  ENGINE 選項的值必須是 MERGEUNION 選項列出了將被收錄在這個 MERGE 數據表離得各有關數據表。把這個 MERGE 創建出來後,就可以像對待任何其他數據表那樣查詢它,只是每一次查詢都將同時作用與構成它的每一個成員數據表 。下麵這個查詢可以讓我們知道上述幾個日誌數據表的數據行的總數:

SELECT COUNT(*)FROM log_merge; 

  下麵這個查詢用來確定在這幾年裡每年各有多少日誌記錄項:

SELECT YEAR(dt) AS y, COUNT(*) AS entries FROM log_merge GROUP BY y; 

  除了便於同時引用多個數據表而無需發出多條查詢,MERGE 數據表還提供了以下一些便利。

  1)、MERGE 數據表可以用來創建一個尺寸超過各個 MyISAM 數據表所允許的最大長度邏輯單元
  2)、經過壓縮的數據表包括到 MERGE 數據表裡。比如說,在某一年結束之後,你應該不會再往相應的日誌文件里添加記錄,所以你可以用 myisampack 工具壓縮它以節省空間,而 MERGE 數據表仍可以像往常那樣工作
  3)、MERGE 數據表也支持 DELETE 和 UPDATE 操作INSERT 操作比較麻煩,因為 MySQL 需要知道應該把新數據行插入到哪一個成員表裡去。在 MERGE 數據表的定義里可以包括一個 INSERT_METHOD 選項,這個選項的可取值是 NO、FIRST、LAST,他們的含義依次是 INSERT操作是被禁止的、新數據行將被插入到現在 UNION 選項里列出的第一個數據表或最後一個數據表。比如說,以下定義將對 log_merge 數據表的 INSERT 操作被當作對 log_2007 數據表----它是 UNION 選項所列出的最後一個數據表:

CREATE TABLE log_merge( 
    dt DATETIME NOT NULL, 
    info VARCHAR(100) NOT NULL, 
    INDEX(dt) 
) ENGINE = MERGE UNION = (log_2004, log_2005, log_2006, log_2007) INSERT_METHOD = LAST; 

  創建一個新的成員數據表 log_2009 並讓他有同樣的表結構,然後修改 log_merge 數據表把 log_2009 包括進來:log_2009:

CREATE TABLE log_2009 LIKE log_2008; //根據舊表創建新表
ALTER TABLE log_merge UNION = (log_2004, log_2005, log_2006,log_2007,log_2008,log_2009);

  

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 例如我們需要ssh的時候,每次都要ssh [email protected] -p 12345,這樣顯然很麻煩。 我們可以vim ~/.bashrc在裡面添加alias ssh_='ssh [email protected] -p',這樣以後直接ssh_ 12345即可,最後記得sour ...
  • 嵌入式現在可以說是很熱門的IT技術之一了,據調查,每個公司就有2-3個嵌入式工程師,當然這是小公司,大公司可想而知,不止這樣,在比較熱門的招聘平臺上,嵌入式占據了3分之一,而且薪資待遇都是很不錯的,前景也很好。那麼問題來了,好多人都在問我嵌入式系統怎麼學,嵌入式系統的分類有哪些?像這種問題,是學習嵌 ...
  • 下麵介紹在 Linux 操作系統中重啟和關閉相關的命令:shutdown、reboot、init、halt、poweroff、systemctl,你可以根據需要來選擇適合的 Linux 命令關閉或重新啟動系統。其中 shutdown、halt、poweroff、reboot 命令是用來停機、重啟或切 ...
  • 請問在一個命令上加什麼參數可以實現下麵命令的內容在同一行輸出。 echo "zhaokang";echo "zhaokang" [root@zhaokang test]# echo "zhaokang";echo "zhaokang"zhaokangzhaokang 解答: [root@zhaoka ...
  • 企業案例:查找當前目錄下所有文件,並把文件中的https://www.cnblogs.com/zhaokang2019/字元串替換成https://www.cnblogs.com/guobaoyan2019/ 方法1: 創建實戰數據: echo https://www.cnblogs.com/zha ...
  • Linux -- 文件許可權 瞭解文件許可權前需要先知道用戶和用戶組的概念 用戶:https://www.cnblogs.com/holmes-cat/p/10345553.html用戶組:https://www.cnblogs.com/holmes-cat/p/10346842.html 1.使用 l ...
  • [20190213]學習bbed-恢復刪除的數據.txt--//以前也做過類似測試,當時在用bbed做verify時錯誤都不處理,當時的想法就是能讀出就ok了.--//而且當時也做成功,純粹是依葫蘆畫瓢,按照別人的blog重覆操作,一點不理解為什麼這樣做.--//重覆測試:1.環境:SCOTT@bo ...
  • 從本質上區別: 1、空值不占空間 2、null值占空間 通俗的講: 空值就像是一個真空轉態杯子,什麼都沒有,而null值就是一個裝滿空氣的杯子,雖然看起來都是一樣的,但是有著本質的區別。 例子: 創建一個test表,colA是不可以存放null值的,colB是能存放null值的。 1 CREATE ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...