mysql的建表引擎和MRG_MYISAM引擎介绍

493 阅读2分钟

在MySQL中,常用的表引擎包括InnoDB、MyISAM、Memory等。每种表引擎都有其特点和适用场景,下面是一些常用的表引擎的简单介绍:

  1. InnoDB引擎:是MySQL默认的存储引擎,支持事务、行级锁、外键约束等特性,适合于需要处理高并发事务的应用场景,如电子商务、金融交易等。

  2. MyISAM引擎:是MySQL的另一个常用存储引擎,支持全文索引和压缩表等特性,但不支持事务和行级锁。适用于只读或者读写比例低的应用场景,如日志、归档等。

  3. Memory引擎:是一种基于内存的存储引擎,所有数据都存储在内存中,速度非常快,但是数据容易丢失,适用于缓存和临时数据等。

  4. CSV引擎:CSV是Comma Separated Values的缩写,即逗号分隔值,CSV引擎是将数据以CSV格式保存在文本文件中。CSV引擎的特点是数据存储在文本文件中,方便数据导入和导出,但是CSV引擎不支持索引、事务、行级锁等功能,同时也不支持BLOB、TEXT等数据类型。

CSV引擎适用于需要将数据导入导出的场景,如日志记录、报表统计等。

  1. Blackhole引擎:Blackhole引擎是一个非常特殊的引擎,它不会将数据保存到磁盘,而是会忽略所有写操作并返回成功。Blackhole引擎的数据写入操作不会失败,但是也不会真正保存数据,因此适用于需要将数据写入多个数据源的场景,如数据同步、数据备份等。

  2. MRG_MYISAM引擎:MRG_MYISAM引擎是一个复合引擎,可以将多个MyISAM表合并成一个逻辑表。MRG_MYISAM引擎的表可以包含多个表名,支持索引、查询等操作,但是不支持事务、行级锁等特性。

MRG_MYISAM引擎适用于需要对多个MyISAM表进行统一操作的场景,如数据归档、日志分析等。

MRG_MYISAM表建表示例

可以先建两个带有相同字段和属性的表t1和t2,然后再建一个相同字段和属性的表t,并用关键字UNION表示联合。


CREATE TABLE `t1` (
  `a` int(11) NOT NULL auto_increment,
  `message` char(20) default NULL,
  PRIMARY KEY  (`a`)
) ENGINE=MyISAM ;

CREATE TABLE `t2` (
  `a` int(11) NOT NULL auto_increment,
  `message` char(20) default NULL,
  PRIMARY KEY  (`a`)
) ENGINE=MyISAM ;

CREATE TABLE `t` (
  `a` int NOT NULL,
  `message` char(20) COLLATE utf8mb4_general_ci DEFAULT NULL
) ENGINE=MRG_MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci PACK_KEYS=0 ROW_FORMAT=COMPACT INSERT_METHOD=FIRST UNION=(`t1`,`t2`);


t1和t2表的数据变化时,表t的数据也会变。