MySQL中的常用存储引擎:
1、完整的建表语句
create table `t_x` (
`tid` int primary key,
`tname` varchar(255) not null
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
了解:在MySQL中,凡是标识符是可以用飘号括起来。最好别用,不通用,在Oracle中就报错。
mysql默认使用的存储引擎是InnoDB方式,默认字符集编码是utf8。
2、什么是存储引擎?
存储引擎这个名称只有在mysql中存在。Oracle中有对应的机制,但是不叫存储引擎,就叫“表的存储方式”。
mysql支持很多存储引擎,每一个存储引擎都对应了一种不同的存储方式。
每一个存储引擎都有自己的优缺点,需要在合适的时候选择合适的存储引擎。
3、查看当前mysql支持的引擎
show engines \G;
4、常见的存储引擎
(1)MyISAM存储引擎
Engine: MyISAM
Support: YES
Comment: MyISAM storage engine
Transactions: NO
XA: NO
Savepoints: NO
MyISAM这种存储引擎不支持事务。
MyISAM是mysql最常用的存储引擎,但是这种引擎不是默认的。
这种引擎使用三个文件表示每张表:
格式文件—存储表结构的定义(xxx.frm)
数据文件—存储表记录的数据内容(xxx.MYD)
索引文件—存储表上的索引(xxx.MYI)
优点:灵活的auto_increment主键自增机制。可以被压缩,转换成只读表来节省空间。
缺点:不支持事务。
(2)InnoDB存储引擎
Engine: InnoDB
Support: DEFAULT
Comment: Supports transactions, row-level locking, and foreign keys
Transactions: YES
XA: YES
Savepoints: YES
表的结构存储在xxx.frm文件中。
缺点:数据存储在tablespace这样的表空间中(逻辑概念),无法被压缩,无法转换成只读。
优点:支持事务、行级锁,外键等。这种存储引擎让数据的安全得到了保障。
这种InnoDB存储引擎在mysql数据库崩溃之后提供自动恢复机制。
(3)MEMORY存储引擎
Engine: MEMORY
Support: YES
Comment: Hash based, stored in memory, useful for temporary tables
Transactions: NO
XA: NO
Savepoints: NO
以前叫做HEPA引擎,现在叫MEMORY,意思是记忆,速度最快。
表以xxx.frm格式的文件存储在文件中。
优点:
表的数据及索引被存储在内存中,所以读取查询的速度极快。
表级锁机制。
缺点:不支持事务,数据存储在内存中,容易丢失,断电就没了。
不能存储Text或BOLB字段,即不能存大量文本和二进制对象。