初窥MySQL的索引与事务

目录

一.索引

1.什么是索引

2.索引的作用

3.索引的使用场景

4.索引的简单使用

(1)查看索引

(2)创建索引

(3)删除索引

 二.事务

1.什么是事务以及为什么使用事务

(1)事务的概念

(2)使用事务的原因

 2.如何开启事务

(1)开启事务的三部曲

(2)开启事务的例子

3.事务的四大特性


一.索引

1.什么是索引

索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引,并指定索引的类型,各类索引有各自的数据结构实现。

2.索引的作用

  • 可以快速定位,检索数据
  • 可以提高数据库的性能,如果查询数据的时间太长,可以通过创建索引提高查询效率

3.索引的使用场景

如果需要对数据库中的某列或者某几列想要创建索引,需要考虑以下几点(如果不考虑以下几点,可能提高不了查询的效率):

  • 数据量较大,经常对这些数据进行条件查询。
  • 对创建索引的列修改插入频率较低。
  • 索引会占用磁盘空间,在创建索引的时候需要考虑磁盘空间是否充足。
  • 根据where条件查询来创建合适的索引。
  • 索引也不是创建的越多越好,数据量大的时候更新索引也消耗时间

注意:对于有些查询结果使用不到索引如:给name创建一个索引,当name is null 或者

name  like % 某%,就使用不到索引。

4.索引的简单使用

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

(1)查看索引

语法:

show index from 表名;

(2)创建索引

语法:

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

(3)删除索引

语法:

drop index 索引名 on 表名;

 二.事务

1.什么是事务以及为什么使用事务

(1)事务的概念

事务(具有原子性)指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部失败。在不同的环境中,都可以有事务。对应在数据库中,就是数据库事务。


(2)使用事务的原因

在某些场景下,如果没有事务就会出现很大的问题。例如银行的转账问题。

 2.如何开启事务

(1)开启事务的三部曲

  1. 开启事务:start transaction;
  2. 执行多条SQL语句
  3. 回滚或提交 rollback(全部失败)/commit(全部成功)。

(2)开启事务的例子

初始化的账户

drop table if exists accout;
create table accout(
id int primary key auto_increment,
name varchar(20) comment '账户名称',
money decimal(11,2) comment '金额'
);
insert into accout(name, money) values
('张三', 3000),
('李四', 3000);

开启事务后的转钱操作

start transaction;
-- 张三账户减少2000
update accout set money=money-2000 where name = '张三';
-- 李四账户增加2000
update accout set money=money+2000 where name = '李四';
-- commit执行完成后转账就会成功,数据库中的数据就会得到修改
commit;

使用commit之前 

 使用commit之后

 

开启事务后,如果没有执行到commit,那么数据库中的数据就没有得到修改,虽然在当前数据库中显示钱已经发生了变化,但是再打开另一个数据库端口重新进入就会发现没有变化,这就是开启事务的好处,没有执行成功就不会修改数据库中的数据。

3.事务的四大特性

  1. 原子性:对于一组操作(主要为更新),要么全部成功,要么全部失败。
  2. 一致性:一个事务里面,多次查询到的结果都是一致的。
  3. 隔离性:不同事务,查询/修改的数据是互相隔离的。一个事务没有提交/回滚之前,修改数据只有自己可以看到。
  4. 持久性:事务提交后,数据会持久化到硬盘中。
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值