数据库else:2022

本文详细介绍了MySQL的两种主要存储引擎MyISAM和InnoDB的特点,包括它们的锁机制、事务支持及默认设置。同时,讨论了数据库事务的四种隔离级别,如读未提交、读已提交、可重复读和可串行化,以及各自可能引发的问题。此外,还涵盖了索引的类型,如普通索引、唯一索引、主键索引、联合索引和全文索引,强调了它们在数据库查询效率中的作用。
摘要由CSDN通过智能技术生成

#博学谷IT学习技术支持#

个人笔记后续会进行内容改进

数据库存储引擎

1.MyISAM 存储引擎

主要特点:

MySQL5.5 版本之前的默认存储引擎

支持表级锁(表级锁是 MySQL 中锁定粒度最大的一种锁,表示对当前操作的整张表加锁)

不支持事务,外键。

适用场景:对事务的完整性没有要求,或以 select、insert 为主的应用基本都可以选用

MYISAM。在 Web、数据仓库中应用广泛。

特点:

1、不支持事务、外键

2、每个 myisam 在磁盘上存储为 3 个文件,文件名和表名相同,扩展名分别是

.frm -------存储表定义

.MYD --------MYData,存储数据

.MYI --------MYIndex,存储索引

2.InnoDB 存储引擎

主要特点:

MySQL5.5 版本之后的默认存储引擎;

支持事务;

支持行级锁(行级锁是 Mysql 中锁定粒度最细的一种锁,表示只针对当前操作的行进行加锁);

支持聚集索引方式存储数据

隔离级别

(1)读未提交(read Uncommited):

在该隔离级别,所有的事务都可以读取到别的事务中未提交的数据,会产生脏读问题,在项

目中基本不怎么用, 安全性太差;

(2) 读已提交(read commited):

这是大多数数据库默认的隔离级别,但是不是 MySQL 的默认隔离级别;这个隔离级别满足

了简单的隔离要求:一个事务只能看见已经提交事务所做的改变,所以会避免脏读问题;

由于一个事务可以看到别的事务已经提交的数据,于是随之而来产生了不可重复读和虚读等

问题(下面详细介绍这种问题,结合问题来理解隔离级别的含义);

(3 ) 可重复读(Repeatable read):

这是 MySQL 的默认隔离级别,它确保了一个事务中多个实例在并发读取数据的时候会读取

到一样的数据;不过理论上,这会导致另一个棘手的问题:幻读 (Phantom Read)。简

单的说,幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当

用户再读取该范围的数据行时,会发现有新的“幻影” 行。InnoDB 和 Falcon 存储引擎通

过多版本并发控制(MVCC,Multiversion Concurrency Control)机制解决了该问题。

(4) 可串行化(serializable):

事物的最高级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之,

它是在每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争,一

般为了提升程序的吞吐量不会采用这个;

索引的分类(必会)

  1. 普通索引:最基本的索引,它没有任何限制。
  2. 唯一索引:与普通索引类似,不同的就是索引列的值必须唯一,但允许有 空值。如果是组合索引,则列值的组合必须唯一。

(3) 主键索引:它是一种特殊的唯一索引,用于唯一标识数据表中的某一条记 录,不允许有空值,一般用 primary key 来约束。

(4) 联合索引(又叫复合索引):多个字段上建立的索引,能够加速复合查询 条件的检索。

(5) 全文索引:老版本 MySQL 自带的全文索引只能用于数据库引擎为 MyISAM 的数据表,新版本 MySQL 5.6 的 InnoDB 支持全文索引。默认 MySQL 不支持中文全文检索,可以通过扩展 MySQL,添加中文全文检索或为中文内容表提供一个对应的英文索引表的方式来支持中文。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值