MySQL_事务和索引

ACID

数据库中的事务(Transaction)有四个特性,分别是:原子性(Atomicity),一致性(Consistency),隔离性(lsolation),持久性(Durability)

所谓事务,它是一系列操作的序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。(执行逻辑功能的一组指令或者操作称之为事务)

1. 原子性

一个事务是一个不可再分割的工作单位,事务中的操作要么都执行,要么都不执行。

2. 一致性

执行一个事务前和后,数据库的完整性约束没有被破坏。也就是说事务不能破坏数据库的完整性以及业务逻辑的一致性。

3. 隔离性

多个事务并发时,每个事务应该是隔离的,一个事务不应影响其他事务的运行效果。

4. 持久性

事务执行完成后,该事务对数据库的更改便持久到了数据库中,这个更改是永久的。

事务并发问题

1. 脏读:

事务A读取了事务B的更新的数据,但是事务B回滚了,导致A读取的为脏数据。

2. 不可重复读:

事务A读取同一数据两次,但是在两次之间事务B对该数据进行了修改并提交,导致事务A读取两次读取不一致。

3. 虚读(幻读):

一个事务读取到了别的事务插入的数据,导致前后读取不一致。

四种隔离级别设置

设置 描述
Serializable 可避免脏读、不可重复读、虚读情况的发生。(串行化)
Repeatable read 可避免脏读、不可重复读情况的发生。(可重复读)
Read committed 可避免脏读情况发生(读已提交)。
Read uncommitted 最低级别,以上情况均无法保证。(读未提交)

十、索引

MySQL官方对索引的定义为:索引(index)是帮助MySQL高效获取数据的数据结构,索引是一种数据结构。

分类

在一个表中,主键索引只能有一个,唯一索引可以有多个

  • 主键索引(PRIMARY KEY):
    唯一的标识,主键不可重复,只能有一个列作为主键
  • 唯一索引(UNIQUE KEY):
    避免重复的列出现,唯一索引可以重复,多个列都可以标识唯一索引
  • 常规索引(KEY/INDEX)
    默认的,index、key关键字来设置
  • 全文索引(FULLTEXT)
    在特定数据库引擎才有,例如MyISAM。可以快速定位数据

索引原则

  • 索引并非越多越好
  • 不要对经常变动的数据添加索引
  • 小数据量的表不需要添加索引
  • 索引一般加在常用来查询的字段上
  • 可以理解索引为服务查询的一个结果
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容