存储引擎的概念和查看

存储引擎的概念
插件式存储引擎是Mysql中最重要的特性之一,用户可以根据应用的需要选择如何存储数据和索引,是否使用事物等,从而改善你的应用的整体功能。这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎,MySQL默认支持多种存储引擎,以适应不同领域数据库的需求,用户可以通过选择不同的存储引擎,提高应用的效率,提供灵活的存储,用户也可以按照自己的需求定制和使用存储引擎。
查看存储引擎

SHOW ENGINES;

mysql数据库存储引擎查看 mysql如何查看存储引擎_mysql数据库存储引擎查看


查看当前存储引擎

查看系统当前支持的存储引擎,需要使用如下命令:

SHOW VARIABLES LIKE '%storage_engine%';

mysql数据库存储引擎查看 mysql如何查看存储引擎_mysql数据库存储引擎查看_02

  • 当前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

常见存储引擎的区别

mysql数据库存储引擎查看 mysql如何查看存储引擎_存储引擎_03


除了上表列出了,重点介绍下MyISAM和InnoDB区别

  • 主外键
  • MyISAM : 不支持
  • InnoDB: 支持
  • 事务
  • MyISAM:不支持
  • InnoDB:支持
  • 行表锁
  • MyISAM 表锁 操作一条记录也会锁住整个表 不适合高并发的操作
  • InnoDB 行锁 操作时,只锁某一行,不对其它行有影响 适合高并发的操作
  • 缓存
  • MyISAM : 只缓存索引,不缓存数据
  • InnoDB:不仅缓存索引,还要缓存真实数据,对内存要求比较高,而且内存大小对性能有决定性的影响
  • 关注点
  • MyISAM性能
  • InnoDB:事务
  • 默认安装
  • MyISAM:是
  • InnoDB:是