Access教程 sql server教程
  • MySQL教程
  • DB2教程 ORACLE教程
    当前位置:教程 > 数据库 > MySQL教程 > 正文

    MySQL存储引擎介绍及应用场景

    编辑:教程网 来源:网络 时间:2013年08月15日 17:52

    Merge存储引擎

    也叫MRG_MyISAM,为那些完全一致的MyISAM表提供统一的访问接口,使得它们好像是合并了一样,实际上Merge并不存储数据。合并的MyISAM表要求具有完全相同的列和索引信息。以下为做的一些小测试

    创建基表:

    mysql>CREATETABLEt1(idINTPRIMARYKEY,nameVARCHAR(20));

    QueryOK,0rowsaffected(0.05sec)

    mysql>CREATETABLEt2(idINTPRIMARYKEY,nameVARCHAR(20));

    QueryOK,0rowsaffected(0.01sec)

    各插入2条实验数据

    mysql>INSERTINTOt1VALUES(1,'a'),(2,'b');

    QueryOK,2rowsaffected(0.09sec)

    Records:2Duplicates:0Warnings:0

    mysql>INSERTINTOt2VALUES(3,'c'),(4,'d');

    QueryOK,2rowsaffected(0.02sec)

    Records:2Duplicates:0Warnings:0

    mysql>SELECT*FROMt1;

    +----+------+

    |id|name|

    +----+------+

    |1|a|

    |2|b|

    +----+------+

    2rowsinset(0.00sec)

    mysql>SELECT*FROMt2;

    +----+------+

    |id|name|

    +----+------+

    |3|c|

    |4|d|

    +----+------+

    2rowsinset(0.00sec)

    创建Merge表:

    union选项指定合并的基表,insert_method选项指明了当向merge表插入数据时,实际插入的表,如不指定,插入时会报错。

    mysql>CREATETABLEmerge_t1_t2(idINTPRIMARYKEY,nameVARCHAR(20))ENGINE=MERGEUNION=(t1,t2)INSERT_METHOD=LAST;

    QueryOK,0rowsaffected(0.01sec)

    查询Merge表结果为t1t2的并集:

    mysql>SELECT*FROMmerge_t1_t2;

    +----+------+

    |id|name|

    +----+------+

    |1|a|

    |2|b|

    |3|c|

    |4|d|

    +----+------+

    4rowsinset(0.00sec)

    Merge表插入数据,由于指定了INSERT_METHOD=LAST,实际插入t2表:

    mysql>insertintomerge_t1_t2values(5,'e');

    QueryOK,1rowaffected(0.03sec)

    mysql>SELECT*FROMmerge_t1_t2;

    +----+------+

    |id|name|

    +----+------+

    |1|a|

    |2|b|

    |3|c|

    |4|d|

    |5|e|

    +----+------+

    5rowsinset(0.00sec)

    mysql>SELECT*FROMt2;

    +----+------+

    |id|name|

    +----+------+

    |3|c|

    |4|d|

    |5|e|

    +----+------+

    3rowsinset(0.00sec)

    此时,数据目录中也生成了Merge表的文件:merge_t1_t2.frmmerge_t1_t2.MRG

    我们来看一下.MGR文件的内容:

    [[email protected]]#catmerge_t1_t2.MRG

    t1

    t2

    #INSERT_METHOD=LAST

    发现.MGR简单地保存了基表的表名,没有保存实际数据,那么是不是可以通过修改

  • 原文来自 教程网 转载请注明:http://www.websmill.com/shujuku/MySQL/32321.html

  • 上一篇:怎样在vc、delphi中使用mysql(mysql odbc驱动的使用)
  • 下一篇:没有了