存储引擎的概念和查看
存储引擎的概念
插件式存储引擎是Mysql中最重要的特性之一,用户可以根据应用的需要选择如何存储数据和索引,是否使用事物等,从而改善你的应用的整体功能。这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎,MySQL默认支持多种存储引擎,以适应不同领域数据库的需求,用户可以通过选择不同的存储引擎,提高应用的效率,提供灵活的存储,用户也可以按照自己的需求定制和使用存储引擎。
查看存储引擎
SHOW ENGINES;
查看当前存储引擎
查看系统当前支持的存储引擎,需要使用如下命令:
SHOW VARIABLES LIKE '%storage_engine%';
- 当前MySQL默认的存储引擎是InnoDB
- 当前MySQL正在使用的存储引擎也是InnoDB
存储引擎的创建和修改
创建新表时,如果不指定存储引擎,那么系统就会使用默认的存储引擎,MySQL 5.5之前的默认存储引擎是MyISAM , 5.5之后改为了InnoDB,如果需要修改存储引擎可以在核心配置文件中配置如下操作
default-storage-engine=INNODB
也可以在创建表的时候,通过增加ENGINE关键字设置新表的存储引擎,例如下面的例子:
CREATE TABLE `test1` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MYISAM DEFAULT CHARSET=utf8
CREATE TABLE `test2` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8
也可以把一个已经存在的表的存储引擎,修改成其他表的存储引擎,操作如下
ALTER TABLE test1 ENGINE = INNODB;
SHOW CREATE TABLE test1
常见存储引擎的区别
除了上表列出了,重点介绍下MyISAM和InnoDB区别
- 主外键
- MyISAM : 不支持
- InnoDB: 支持
- 事务
- MyISAM:不支持
- InnoDB:支持
- 行表锁
- MyISAM 表锁 操作一条记录也会锁住整个表 不适合高并发的操作
- InnoDB 行锁 操作时,只锁某一行,不对其它行有影响 适合高并发的操作
- 缓存
- MyISAM : 只缓存索引,不缓存数据
- InnoDB:不仅缓存索引,还要缓存真实数据,对内存要求比较高,而且内存大小对性能有决定性的影响
- 关注点
- MyISAM性能
- InnoDB:事务
- 默认安装
- MyISAM:是
- InnoDB:是