MySQL存储引擎

MySQL存储引擎

1.存储引擎的概念

  • 众所周知,MySQL中的数据通过各种不同的技术存储在文件(或者内存)中
  • 这些技术都使用不同的存储机制,索引技巧,锁定水平且提供不同的功能和其具有的能力
  • 通过选择不同的技术,能够获得额外的速度或者功能,从而改善你的应用的整体功能
  • 这些不同的技术以及配套的相关功能在MySQL中被称为存储引擎

2.查看当前使用的引擎

show engines;  #查看当前版本默认支持的数据库引擎

show variables like '%storage_engine';  #查看当前数据库使用的引擎

存储引擎
1. InnoDB
事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键,InnoDB是默认的MySQL引擎。
InnoDB主要特性有:
①InnoDB给MySQL提供了具有提交、回滚、崩溃恢复能力的事务安全存储引擎。
②InnoDB 是为处理巨⼤数据的 CPU 效率⽐其他基于磁⾼。
③InnoDB 存储引擎⾃带缓冲缓存在内存中。
④InnoDB ⽀持外键完整性约
⑤InnoDB 被⽤在众多需要⾼上使⽤
⑥InnoDB ⽀持⾏级锁
2.MyISAM
①MyISAM 基于 ISAM 存储引擎,并对其进行扩展。它是在Web、数据仓储和其他应用环境下最长使用的存储引擎之⼀。MyISAM 拥有较高的插入、查询速度,但不⽀持事务。
MyISAM主要特性有:
1. ⼤⽂件⽀持更好
2. 当删除、更新、插⼊混⽤时,产生更少碎片
3. 每个 MyISAM 表最⼤索引数是64,这可以通过重新编译来改变。每个索引最大的列数是16
4. 最⼤的键⻓度是1000字节
5. BLOB和TEXT列可以被索
6. NULL 被允许在索引的列中,这个值占每个键的0~1个字节
7. 所有数字键值以⾼字节优先被存储以允许一个更高的索引压缩
8. MyISAM 类型表的 AUTO_INCREMENT列更新比InnoDB 类型的 AUTO_INCREMENT更快
9. 可以把数据⽂件和索引文件放在不同目录
10. 每个字符列可以有不同的字符集
11. 有 VARCHAR 的表可以固定或动态记录⻓度
12. VARCHAR 和 CHAR 列可以多达 64KB
13. 只⽀持表锁
14. ⽀持FULLTEXT KEY(全⽂索引)
3.MEMORY
MEMORY 存储引擎将表中的数据存储到内存中,为 查询和引⽤其他表数据提供快速访问。
4.BLACKHOLE
⿊洞引擎⼀般是作为伪主机,⽤来缓解master的压⼒ 的⼀总主从架构的中间机器使⽤, 只产⽣⽇志,不保存数据。

3.存储引擎的选择
⼀般来说,对插⼊和并发性能要求较⾼的,或者需要外 键,或者需要事务⽀持的情况下,需要选择 InnoDB, 插⼊较少,查询较多的场景,优先考虑 MyISAM。
4.指定引擎

create table abc(
	name char(10)
)engine=MyISAM charset=utf8;

create table xyz(
	name char(10)
)engine=InnoDB charset=utf8;

alter table table_name engine=innodb|myisam

5、InnoDB 和 MyISAM 在⽂件⽅⾯的 区别

  • InnoDB 将⼀张表存储为两个⽂件
    ① demo.frm -> 存储表的结构和索引
    ②demo.ibd -> 存储数据,ibd 存储是有限的, 存储 不⾜⾃动创建 ibd1, ibd2
  • MyISAM 将⼀张表存储为三个⽂件
    ①demo.frm -> 存储表的结构
    ②emo.myd -> 存储数据
    ③demo.myi -> 存储表的索引

通过一张图可以看出InnoDB和MyISAM的区别
在这里插入图片描述

锁机制

锁是计算机协调多个进程或线程并发访问某⼀资源的机 制。
锁保证数据并发访问的⼀致性、有效性;
锁冲突也是影响数据库并发访问性能的⼀个重要因素。
锁是Mysql在服务器层和存储引擎层的的并发控制。

通过一张思维导图看一下锁分类
在这里插入图片描述

#查看表中有没有被锁
show open tables#加上读写锁
lock table stuinfo readlock table stuinfo write#解除锁
unlock tables

数据库中有许多需要锁处理的情况百度可见

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

͝͝͝͝͝͝͝͝͝͝L Y H

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值