Memory与Merge特性
MEMORY
? Memory存儲引擎將表的數據存放在內存中。每個MEMORY表實際對應一個磁盤文件,格式是.frm ,該文件中只存儲表的結構,而其數據文件,都是存儲在內存中,這樣有利于數據的快速處理,提高整個表的效率。MEMORY 類型的表訪問非常地快,因為他的數據是存放在內存中的,并且默認使用HASH索引 , 但是服務一旦關閉,表中的數據就會丟失。
MERGE
? MERGE存儲引擎是一組MyISAM表的組合,這些MyISAM表必須結構完全相同,MERGE表本身并沒有存儲數據,對MERGE類型的表可以進行查詢、更新、刪除操作,這些操作實際上是對內部的MyISAM表進行的。
? 對于MERGE類型表的插入操作,是通過INSERT_METHOD子句定義插入的表,可以有3個不同的值,使用FIRST 或 LAST 值使得插入操作被相應地作用在第一或者最后一個表上,不定義這個子句或者定義為NO,表示不能對這個MERGE表執行插入操作。
? 可以對MERGE表進行DROP操作,但是這個操作只是刪除MERGE表的定義,對內部的表是沒有任何影響的。
下面是一個創建和使用MERGE表的示例 :
1). 創建3個測試表 order_1990, order_1991, order_all , 其中order_all是前兩個表的MERGE表 :
create table order_1990(order_id int ,order_money double(10,2),order_address varchar(50),primary key (order_id) )engine = myisam default charset=utf8;create table order_1991(order_id int ,order_money double(10,2),order_address varchar(50),primary key (order_id) )engine = myisam default charset=utf8;create table order_all(order_id int ,order_money double(10,2),order_address varchar(50),primary key (order_id) )engine = merge union = (order_1990,order_1991) INSERT_METHOD=LAST default charset=utf8;2). 分別向兩張表中插入記錄
insert into order_1990 values(1,100.0,'北京'); insert into order_1990 values(2,100.0,'上海');insert into order_1991 values(10,200.0,'北京'); insert into order_1991 values(11,200.0,'上海');3). 查詢3張表中的數據。
order_1990中的數據 :
order_1991中的數據 :
?order_all中的數據 :
?
?4). 往order_all中插入一條記錄 ,由于在MERGE表定義時,INSERT_METHOD 選擇的是LAST,那么插入的數據會想最后一張表中插入。
insert into order_all values(100,10000.0,'西安');總結
以上是生活随笔為你收集整理的Memory与Merge特性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL高级 - MyISAM特性
- 下一篇: MySQL高级 - 存储引擎 - 选择原