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 選項的值必須是 merge,union 選項列出了將被收錄在這個 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 需要知道應該把新資料行插入到哪乙個成員表裡去。在 mergecferq 資料表的定義裡可以包括乙個 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);
本文標題: mysql的merge儲存引擎詳解
本文位址: /shujuku/mysql/252205.html
MySQL 儲存引擎 MERGE 的介紹
最近在搞乙個 專案,每個站點每月的資料量近150 200萬條記錄,因為採用站點和日期分表機制來減輕伺服器的壓力,但專案中又必須對全部站點以及跨日期進行查詢資料功能。merge儲存引擎型別允許把許多結構相同的表合併為乙個大表。然後,你可以執行查詢,從多個表返回的結果就像從乙個表返回的結果一樣,從而不需...
merge儲存引擎
merge儲存引擎是一組myisam 表的集合。這些myisam 表的結構必須完全相同。對merge表進行的操作實際是對myisam 表的操作。但是,刪除merge 表並不會影響內部的myisam 表。它的檔案有 frm mrg insert method 的值 有 3 個 no 表示不能對merg...
MySQL中merge表儲存引擎用法
在mysql資料庫中,merge表有點類似於檢視。mysql的merge引擎型別允許你把許多結構相同的表合併為乙個表。之後,你可以執行查詢,從多個表返回的結果就像從乙個表返回的結果一樣。每乙個合併的表必須有完全相同表的定義和結構。mysql merge表的優點 a.分離靜態的和動態的資料 b.利用結...