mysql数据库3—数据库存储引擎
1.存储引擎的概念
插件式存储引擎是Mysql中最重要的特性之一,用户可以根据应用的需要选择如何存储数据和索引,是否使用事物
等,从而改善你的应用的整体功能。这些不同的技术以及配套的相关功能在 MySQL中被称作存储引擎,MySQL默认支
持多种存储引擎,以适应不同领域数据库的需求,用户可以通过选择不同的存储引擎,提高应用的效率,提供灵活的
存储,用户也可以按照自己的需求定制和使用存储引擎。
2.查看数据库存储引擎
1.查看有关服务器的存储引擎的状态信息
命令:show engines;
查出结果:
各列的意思
1.Engine:存储引擎的名称。
2.Support:服务器对存储引擎的支持级别
(1)YES:引擎受支持且处于活动状态
(2)DEFAULT:支持该引擎且是默认引擎
(3)NO:不支持引擎
(4)DISABLED:支持引擎,但已将其禁用
3.Comment:存储引擎的简要说明。
4.Transactions:存储引擎是否支持事务。
5.XA:存储引擎是否支持XA事务
6.Savepoints:存储引擎是否支持保存点。
2.查看系统当前支持的存储引擎
命令:show variables like '%storage_engine%';
查出结果:
PS:
1.default_storage_engine 表示永久表(permanent tables)的默认存储引擎。
2.default_tmp_storage_engine 表示临时表的默认存储引擎。
3.存储引擎的创建和修改
创建新表时,如果不指定存储引擎,那么系统就会使用默认的存储引擎,MySQL 5.5之前的默认存储引擎是MyISAM
, 5.5之后改为了InnoDB,如果需要修改存储引擎可以进行以下操作
1.对mysql配置文件修改
在mysql文件夹位置找到my.ini文件,并进行修改;将原先的default-storage-engine=INNODB 改为 default-storage-engine=MyISAM;并重启数据库。
2.在创建表时进行指定
1.创建表’test1‘
CREATE TABLE `test1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM default CHARSET=utf8
2.创建表’test2‘
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
3.修改表存储引擎
-- 修改表test1存储引擎为innoDB
alter table test1 ENGINE = innoDB;
-- 查看创表语句
show create table test1
4.常见存储引擎的区别
除了上表列出了,重点介绍下MyISAM和InnoDB区别
1.主外键
MyISAM : 不支持
InnoDB: 支持
2.事务
MyISAM:不支持
InnoDB:支持
3.行表锁
MyISAM 表锁 操作一条记录也会锁住整个表 不适合高并发的操作
InnoDB 行锁 操作时,只锁某一行,不对其它行有影响 适合高并发的操作
4.缓存
MyISAM : 只缓存索引,不缓存数据
InnoDB:不仅缓存索引,还要缓存真实数据,对内存要求比较高,而且内存大小对性能有决定性的影响
5.关注点
MyISAM性能
InnoDB:事务
6.默认安装
MyISAM:是
InnoDB:是
数据
InnoDB:不仅缓存索引,还要缓存真实数据,对内存要求比较高,而且内存大小对性能有决定性的影响
5.关注点
MyISAM性能
InnoDB:事务
6.默认安装
MyISAM:是
InnoDB:是
总结:InnoDB与MyISAM的最大不同点:一是支持事务, 二是采用了行级锁。