MySQL的存储引擎

MySQL的存储引擎

存储引擎的概念:就是一种数据库存储数据的机制,索引的技巧,以及锁定水平。

存储的方式和存储的格式。

存储引擎也属于MySQL当中组件,实际上操作的,执行的就是数据的读写I/O。

MySQL存储引擎的分类:

MySQL5.5版本之后默认开始使用innodb,事务型速记存储引擎,支持ACID,支持行锁定。

MYisam:5.5版本之前默认的存储引擎,插入的速度和查询速度很快,但是不支持事务。

(了解即可)被淘汰

Memory:内存型存储引擎,数据在写时都保存在内存当中,一但重启所有数据全部消失。

(了解即可)被淘汰

csv:逗号分割数据的存储引擎,数据文件 .csv文件保存的,execl.保存的文件就是一个普通的文本文件。不支持索引。

(了解即可)被淘汰


innodb存储引擎:

1、读写阻塞(锁表)和事务的隔离级别。

2、能够高效的缓存数据支持多种类的索引。

3、表的索引的类型默认是BTREE类型

4、支持外键,支持全文索引。

5、对硬件的资源要求比较高。

6、行级锁定,会把行锁住,禁止操作。

模糊查询:like进行查询时,会进行全表扫描,在扫描的过程中会锁定整个表。

查询没有创建索引的列,也会锁定整个表。

使用的是索引列,锁定条件的行,行锁定。

show engines; 查看存储引擎


innodb行锁和索引的关系:

行锁是通过索引来实现的。

如果没有索引,innodb会使用默认的隐藏索引来对记录进行加锁。

加了索引就是锁行;

不加索引就是锁表。

创建一个表以及所有列

alter table student add primary key(id);

设置id这一列为主键

insert into student values(1,'小明',18,'男');
insert into student values(2,'小红',19,'女');
insert into student values(3,'小刚',19,'男');
insert into student values(4,'小绿',17,'女');
insert into student values(5,'小黑',20,'男');

往表里面插入内容

然后在另外一台终端里面开启事务,删除小明这一行

然后我们在另外一台更新这一行,两台终端都对这行进行不同命令的操作

运行更新这一行的命令

这一行就被锁住了,然后我们对其他的行进行修改

发现小红这一行也被锁住了,所以这就是全表锁,名字这列没有设置索引,所以就是一但锁住,就是全表查询,全表锁住。

死锁:事务相互等待对方的资源,最后形成一个环路造成的

发生了死锁,数据会自动选择一个事务作为受害者,回滚该事务以解除死锁。

MySQL会终止其中一个事务,但是不会回滚

for update :排他锁,当一个事务的操作未完成时,其他事务可以读取但是不能写入。(写锁)

如何避免写锁的情况出现:

1、以固定的顺序访问表和行

2、大事务尽量拆分成小的事务

3、为表添加合理的索引

相关推荐

  1. MySQL 存储引擎(基本介绍)

    2024-07-19 18:18:03       55 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-19 18:18:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-19 18:18:03       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-19 18:18:03       58 阅读
  4. Python语言-面向对象

    2024-07-19 18:18:03       69 阅读

热门阅读

  1. redis时间环结构-时序特征

    2024-07-19 18:18:03       19 阅读
  2. 欢迎来到 Mint Expedition:Web3 和 NFT 的新时代开始

    2024-07-19 18:18:03       23 阅读
  3. MySQL运算符

    2024-07-19 18:18:03       22 阅读
  4. 【gradle中如何不使用插件将依赖打进jar包】

    2024-07-19 18:18:03       18 阅读
  5. web前端面向对象面试25题

    2024-07-19 18:18:03       18 阅读
  6. 【编程语言】C++和C的异同点

    2024-07-19 18:18:03       20 阅读
  7. 【React Hooks原理 - useSyncExternalStore】

    2024-07-19 18:18:03       14 阅读
  8. Ubuntu22.04:安装并配置nfs

    2024-07-19 18:18:03       19 阅读