mysql> show create table emp;
通过此命令可以看到当时的建表语句,engine后面就是跟的表的存储引擎
| emp | CREATE TABLE `emp` (
`EMPNO` int(4) NOT NULL,
`ENAME` varchar(10) DEFAULT NULL,
`JOB` varchar(9) DEFAULT NULL,
`MGR` int(4) DEFAULT NULL,
`HIREDATE` date DEFAULT NULL,
`SAL` double(7,2) DEFAULT NULL,
`COMM` double(7,2) DEFAULT NULL,
`DEPTNO` int(2) DEFAULT NULL,
PRIMARY KEY (`EMPNO`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
建表时指定存储引擎
CREATE TABLE 表名(
字段1 字段1类型 [ COMMENT 字段1注释 ] ,
......
字段n 字段n类型 [COMMENT 字段n注释 ]
) ENGINE = INNODB [ COMMENT 表注释 ] ;
mysql> create table my_myisam(
-> id int,
-> name varchar(10)
-> ) engine = MyISAM;
Query OK, 0 rows affected (0.02 sec)
查看当前数据库支持的存储引擎
mysql> show engines;
发现InnoDB是support列下面是default,即默认的存储引擎:支持事务、行级锁、外键
1.3 存储引擎特点 InnoDB存储引擎含义:是一种兼顾高可靠性和高性能的通用存储引擎。
特点:
DML操作遵循ACID模型,支持事务 行级锁,提高并发访问性能 支持外键FK文件存储:
xxx.ibd,表空间文件,存储了该表的表结构(frm,sdi),数据,索引 参数:innodb_file_per_table表示每张表对应一个表空间mysql> show variables like 'innodb_file_per_table';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| innodb_file_per_table | OFF |
+-----------------------+-------+
1 row in set (0.00 sec)
InnoDB的逻辑存储结构:待加强了解
page是磁盘操作的最小单元16K,extend的大小固定1M,一个区可以包含64个页
MyISAM存储引擎
含义:是MySQL早期的默认存储引擎
特点:
不支持事务,不支持外键 支持表锁,不支持行锁 访问速度快文件存储:
5.5版本 8版本 Memory存储引擎 介绍:表数据存储在内存中,将表作为临时表或者缓存作用 特点: 内存存放 hash索引(默认) 文件: xxx.sdi :存储表结构信息 其他的表数据存在内存中了 三者特点比较1.4 存储引擎选择 InnoDB:对事务要求高、并在并发条件要求数据一致、除查和增外,还需要改删。 MyISAM:查和增操作为主,很少的改和删,对事务完整性和并发要求不高。 例如业务系统的日志的数据,电商的足迹、评论的数据
MEMORY:用于临时表和缓存。缺陷是对表的大小有限制,太大没法缓存内存中。补充:一般用MyISAM的存储引擎都会被现在的Nosql数据库(非关系型数据库),例如MangoDB,Redies。
补充:Redies是存储在内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。它是NoSQL数据库,基于高性能的Key-Value、并提供多种语言的 API的非关系型数据库。