【MySQL数据库】数据库索引事务

目录

1.索引

1.1.概念

1.2 作用

1.3 使用场景

1.4 索引的分类

1.5 使用

2.事务

2.1 事务概念

2.2 事务的四大特性

2.3 MySQL事务操作的两种方法


1.索引

1.1.概念

索引是一种特殊的文件,包含着对数据库表里所有记录的引用指针。可以对表中的一列或多列创建索引,并指定缩印的类型,各类索引有各自的数据结构实现。通缩的说,就是一本书的目录,有了目录就可以快速的定位需要找到的内容。数据库中的表、数据、索引之间的关系,类似于书架上的图书、数据内容何书记目录的关系。

1.2 作用

  • 最主要的作用就是有了索引就会加快数据查询速度
  • 当库中的表很大时,索引的作用就体现的非常明显,一个字“快”
  • 降低数据库的IO成本,就是输出和输入的成本
  • 创建唯一性索引,可以保持数据库表中每一行数据的唯一性
  • 加快表与表之间的连接

1.3 使用场景

要考虑对数据库表的某列或某几列创建索引,需要考虑以下几点:

数据量较大,且经常对这些列进行条件查询。

该数据库表的插入操作,及对这些列的修改操作频率较低。

索引会占用额外的磁盘空间。

满足以上条件时,考虑对表中的这些字段创建索引,以提高查询效率。

反之,如果非条件查询列,或经常做插入、修改操作,或磁盘空间不足时,不考虑创建索引。

  • 对于插入、删除数据频率高的表,不适用索引
  • 对于某列修改频率高的,该列不适用索引
  • 通过某列或某几列的条件查询频率高的,可以对这些列创建索引

1.4 索引的分类

  • 普通索引:这是最基本的索引类型,没有唯一性限制
  • 唯一性索引:和普通索引基本相同,唯一的区别是索引列的所有值只能是唯一的
  • 主键索引:是唯一索引的特定类型,它必须指定为“PRIMARY KEY”。在数据库中为表定义主键将自动创建主键索引。
  • 全文索引,索引类型为FULLTEXT,全文索引可以在CHAR、VARCHAR的列上创建
  • 单列索引与多列索引:索引可以是单列上创建的索引,可以是多列上创建的索引

1.5 使用

创建主键约束、唯一约束、外键约束时,会自动创建对应列的索引。

  • 查看索引
show index from 表名;

例子:查看学生表已有的索引

show index from student;
  • 创建索引

对于非主键、非唯一约束、非外键的字段,可以创建普通索引;

create index 索引名 on 表名(字段名);

例子:创建班级表中,name的字段的索引

create index idx_classes_name on classes(name);
  • 删除索引
drop index 索引名 on 表名;

例子:删除班级表中name字段的索引

drop index classes_name on classes;

2.事务

2.1 事务概念

  1. 事务是一种机制、一个操作序列,包含了一组数据库操作命令,并且把所有的命令作为一个整体以起向系统提交或撤销操作请求,通俗的来说就是这一组命令要么都执行,要么不执行。
  2. 事务是一个不可分割的工作逻辑单元,在数据库系统上执行并发操作时,事务是最小的控制单元。
  3. 事务适用于用户同时操作数据库系统的场景,比如:银行、保险公司、证券交易系统等,通过事务的整体性保证数据的一致性
  4. 事务是保持了一组操作的平稳性和可预测性的技术。

总结一下:你执行的一系列操作,要么完整的执行,要么完全不执行。一般情况下,操作顺利进行,最终操作成功。但是如果在这一系列过程中任何一个环节除了差错,数据库中的所有信息都必须保持在你开始操作前的状态。否则,数据库的信息将会一片混乱而不可预测。使用事务是为了保证数据一致性。

2.2 事务的四大特性

  • 事务的原子性:事务时一个完整的操作,各个元素是不可分的。
  • 事务的一致性:当完成时,数据必须处于一致状态;在事务开始之前,数据库中储存的数据处于一致状态;在正在进行的事务中,数据可能处于不一致的状态;当事务完成时,数据必须再次回到已知的一致状态
  • 隔离性:对数据进行修改的所有并发事务时彼此隔离的,这表名事务必须时独立的,它不会以任何方式依赖于或影响其他事务。
  • 持久性:不管系统是否发送了故障,事务处理的结果都是永久的。一旦事务被提交,事务的效果会被永久地保留在数据库中。

2.3 MySQL事务操作的两种方法

第一种:使用事务处理命令控制

第二种:使用set设置事务的处理方式

事务处理命令控制:

begin :表示开始一个事务,后面会有多条数据库操作语句执行。

commit:表示提交一个事务,对应前面的begin操作,他们之间的数据库操作语句以起完成

rollback:表示回滚一个事务,在begin和commit之间,如果某一个数据库操作语句出现错误,执行rollback 回滚,数据库就会回到begin之前的状态,也就是操作语句都没执行。

参考博客:参考博客

发布了62 篇原创文章 · 获赞 9 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43669007/article/details/104301430