栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

初窥MySQL的索引与事务

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

初窥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)开启事务的三部曲
    开启事务:start transaction;执行多条SQL语句回滚或提交 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.事务的四大特性
    原子性:对于一组操作(主要为更新),要么全部成功,要么全部失败。一致性:一个事务里面,多次查询到的结果都是一致的。隔离性:不同事务,查询/修改的数据是互相隔离的。一个事务没有提交/回滚之前,修改数据只有自己可以看到。持久性:事务提交后,数据会持久化到硬盘中。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/731336.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号