濮阳杆衣贸易有限公司

主頁 > 知識庫 > Mysql的MERGE存儲引擎詳解

Mysql的MERGE存儲引擎詳解

熱門標(biāo)簽:電話機(jī)器人市場趨勢 電銷機(jī)器人各個細(xì)節(jié)介紹 電銷機(jī)器人 行業(yè) 淄博400電話申請 百度地圖標(biāo)注后不顯示 溫州瑞安400電話怎么申請 俄國地圖標(biāo)注app 南昌高頻外呼系統(tǒng)哪家公司做的好 昆明電信400電話辦理

MERGE 存儲引擎把一組 MyISAM 數(shù)據(jù)表當(dāng)做一個邏輯單元來對待,讓我們可以同時對他們進(jìn)行查詢。構(gòu)成一個 MERGE 數(shù)據(jù)表結(jié)構(gòu)的各成員 MyISAM 數(shù)據(jù)表必須具有完全一樣的表結(jié)構(gòu)。每一個成員數(shù)據(jù)表的數(shù)據(jù)列必須按照同樣的順序定義同樣的名字和類型,索引也必須按照同樣的順序和同樣的方式定義。假設(shè)你有幾個日志數(shù)據(jù)表,他們內(nèi)容分別是這幾年來每一年的日志記錄項(xiàng),他們的定義都是下面這樣,YY 代表年份

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

假設(shè)日志數(shù)據(jù)表的當(dāng)前集合包括 log_2004、log_2005、log_2006、log_2007 ,而你可以創(chuàng)建一個如下所示的 MERGE 數(shù)據(jù)表把他們歸攏為一個邏輯單元:

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 選項(xiàng)的值必須是 MERGE,UNION 選項(xiàng)列出了將被收錄在這個 MERGE 數(shù)據(jù)表離得各有關(guān)數(shù)據(jù)表。把這個 MERGE 創(chuàng)建出來后,就可以像對待任何其他數(shù)據(jù)表那樣查詢它,只是每一次查詢都將同時作用與構(gòu)成它的每一個成員數(shù)據(jù)表 。下面這個查詢可以讓我們知道上述幾個日志數(shù)據(jù)表的數(shù)據(jù)行的總數(shù):

SELECT COUNT(*)FROM log_merge;

下面這個查詢用來確定在這幾年里每年各有多少日志記錄項(xiàng):

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

除了便于同時引用多個數(shù)據(jù)表而無需發(fā)出多條查詢,MERGE 數(shù)據(jù)表還提供了以下一些便利。

1)、MERGE 數(shù)據(jù)表可以用來創(chuàng)建一個尺寸超過各個 MyISAM 數(shù)據(jù)表所允許的最大長度邏輯單元

2)、經(jīng)過壓縮的數(shù)據(jù)表包括到 MERGE 數(shù)據(jù)表里。比如說,在某一年結(jié)束之后,你應(yīng)該不會再往相應(yīng)的日志文件里添加記錄,所以你可以用 myisampack 工具壓縮它以節(jié)省空間,而 MERGE 數(shù)據(jù)表仍可以像往常那樣工作

3)、MERGE 數(shù)據(jù)表也支持 DELETE 和 UPDATE 操作。INSERT 操作比較麻煩,因?yàn)?MySQL 需要知道應(yīng)該把新數(shù)據(jù)行插入到哪一個成員表里去。在 MERGE 數(shù)據(jù)表的定義里可以包括一個 INSERT_METHOD 選項(xiàng),這個選項(xiàng)的可取值是 NO、FIRST、LAST,他們的含義依次是 INSERT操作是被禁止的、新數(shù)據(jù)行將被插入到現(xiàn)在 UNION 選項(xiàng)里列出的第一個數(shù)據(jù)表或最后一個數(shù)據(jù)表。比如說,以下定義將對 log_merge 數(shù)據(jù)表的 INSERT 操作被當(dāng)作對 log_2007 數(shù)據(jù)表----它是 UNION 選項(xiàng)所列出的最后一個數(shù)據(jù)表:

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;

創(chuàng)建一個新的成員數(shù)據(jù)表 log_2009 并讓他有同樣的表結(jié)構(gòu),然后修改 log_merge 數(shù)據(jù)表把 log_2009 包括進(jìn)來:log_2009:

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

您可能感興趣的文章:
  • MySQL中實(shí)現(xiàn)插入或更新操作(類似Oracle的merge語句)
  • MySQLMerge存儲引擎

標(biāo)簽:吐魯番 安徽 嘉峪關(guān) 拉薩 ???/a> 甘南 葫蘆島 洛陽

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Mysql的MERGE存儲引擎詳解》,本文關(guān)鍵詞  Mysql,的,MERGE,存儲,引擎,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Mysql的MERGE存儲引擎詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于Mysql的MERGE存儲引擎詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    元阳县| 红河县| 张家川| 嘉定区| 班戈县| 乡城县| 廉江市| 延吉市| 迁西县| 酒泉市| 宜丰县| 瓦房店市| 亚东县| 张家港市| 区。| 米泉市| 舟山市| 呼伦贝尔市| 琼中| 临洮县| 望谟县| 石家庄市| 旬邑县| 水富县| 时尚| 沽源县| 离岛区| 昌都县| 呈贡县| 尼勒克县| 衡南县| 句容市| 扎赉特旗| 拜城县| 赣州市| 顺平县| 大竹县| 大化| 慈溪市| 天长市| 沅江市|