在MySQL中,常用的表引擎包括InnoDB、MyISAM、Memory等。每种表引擎都有其特点和适用场景,下面是一些常用的表引擎的简单介绍:
-
InnoDB引擎:是MySQL默认的存储引擎,支持事务、行级锁、外键约束等特性,适合于需要处理高并发事务的应用场景,如电子商务、金融交易等。
-
MyISAM引擎:是MySQL的另一个常用存储引擎,支持全文索引和压缩表等特性,但不支持事务和行级锁。适用于只读或者读写比例低的应用场景,如日志、归档等。
-
Memory引擎:是一种基于内存的存储引擎,所有数据都存储在内存中,速度非常快,但是数据容易丢失,适用于缓存和临时数据等。
-
CSV引擎:CSV是Comma Separated Values的缩写,即逗号分隔值,CSV引擎是将数据以CSV格式保存在文本文件中。CSV引擎的特点是数据存储在文本文件中,方便数据导入和导出,但是CSV引擎不支持索引、事务、行级锁等功能,同时也不支持BLOB、TEXT等数据类型。
CSV引擎适用于需要将数据导入导出的场景,如日志记录、报表统计等。
-
Blackhole引擎:Blackhole引擎是一个非常特殊的引擎,它不会将数据保存到磁盘,而是会忽略所有写操作并返回成功。Blackhole引擎的数据写入操作不会失败,但是也不会真正保存数据,因此适用于需要将数据写入多个数据源的场景,如数据同步、数据备份等。
-
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的数据也会变。