MySQL存储引擎

本文介绍了MySQL的存储引擎特性,重点对比了MyISAM和INNODB的区别,包括事务支持、锁机制、索引类型和数据存储。MyISAM不支持事务和外键,而INNODB提供事务和行级锁,更适合高并发场景。此外,还提到了存储引擎的相关命令以及内存表Memory的特点。
摘要由CSDN通过智能技术生成

MySQL存储引擎

存储引擎是MySQL将数据存储在文件系统中的存储方式或者存储格式
MySQL最大的特点就是插件式存储引擎,MySQL中常见的存储引擎就是MyISAM和INNODB;还有MyISAM和memory。
MyISAM相比于innodb,不支持事务,不支持外键,索引采用非聚集索引。
MyISAM的表在磁盘存储了三个文件,其扩展名和表名相同,扩展名分别为:
.frm(存储表的定义)
.MYD(MY Data 存储数据)
.MYI(MY index 存储索引)

INNODB存储引擎提供了事务机制,支持自动增长列,外键等功能,索引采用聚集索引,索引和数据存储在同一个文件中,所以INNODB的表在磁盘上有两个文件,其文件名和表名相同,扩展名分别为:
.frm(存储表的定义)
.ibd(存储数据和索引)

memory存储引擎使用内存来存储创建表,每个memory表实际值对应一个磁盘文件,格式是.frm(表结构定义),memory类型表访问非常快,因为数据都存放在内存中,并且默认使用hash索引,不适合范围查询,一旦服务关闭,表中的数据就会丢失。

存储引擎相关命令

查看MySQL支持的存储引擎

 show engines

在展示数据内容中,support表示数据库是否支持

创建表时指定存储引擎

create table table_name(XX) engine=innodb;

修改存储引擎

alter table table_name engine=innodb;

可以通过修改配置文件,MySQL server启动是会加载配置文件,Windows下是my.ini文件,Linux下是my.conf文件,在打开的文件中在[mysqld]上添加配置,保存并重启MySQL server服务器,默认就采用给定的存储引擎。

default-storage-engine=innodb;

MyISAM和INNODB区别

在这里插入图片描述
锁机制:表示数据库在并发请求时,多个事务在操作时,并发操作的力度;
B数索引和哈希索引:主要是用于加快SQL查询效率;
外键:主要是设置两个表连接的主要字段,关键信息;
事务:保证SQL组合的原子操作,要么全部成功,要么不成功,不能部分成功;
索引缓存和数据缓存:在没有对数据和索引做修改之前,重复查询的数据可以不用进行磁盘IO,读取上一次内存中的查询缓存就可以。

MyISAM和INNODB存储引擎使用锁

MyISAM采用的是表级锁;
INNODB支持行锁和表锁,默认使用行锁。

表级锁和行级锁对比:
表级锁:MySQL中锁定粒度最大的一种锁,对当前操作的整个表加锁,实现简单,资源消耗比较少,加锁快,不会出现死锁,锁的粒度最大,触发锁冲突的概率最高,并发度最低,MyISAM和INNODB都支持表级锁;
行级锁:MySQL中锁定粒度最小的一种锁,只针对当前操作的行进行加锁,行级锁能大大减少数据库操作的冲突,其加锁粒度最小,并发度高,但是加锁的开销也是最大,加锁慢,会出现死锁。

innodb行锁的实现:innodb的行锁是通过给索引上的索引项加锁来实现的,而不是给表的行记录加锁实现的,这意味着只有通过索引条件检索数据时,innodb才使用行级锁,否则使用表锁(如果没有索引,存储引擎只能给所有行加锁,和表锁一样)
注意:使用select … for update可以主动获取锁(排他锁)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值