MySQL百万数据量的查询优化&&数据库事务(待更新)

记录自己所学
MySQL百万数据量的查询优化&&数据库事务(待更新)

一、实验

1、准备一个百万数据表进行实验

在这里插入图片描述

在这里插入图片描述

2、通过id查询

SELECT * FROM user where id = 10000;

在这里插入图片描述

在这里插入图片描述

3、通过name查询

在这里插入图片描述

在这里插入图片描述

4、对比分析

由此可见,虽然查询的是同一条数据,但是由于查询条件不同,查询效率差别巨大。
导致这样的结果是因为:
id作为条件可以快速找到数据,因为数据库对id这一列创建索引
name作为条件需要全表扫描,因为数据库没有对name这一列创建索引

接下来我们手动创建name索引

5、创建name索引

在这里插入图片描述

6、再次执行查询

在这里插入图片描述

由此可见,创建索引可以大大提升搜索效率

二、索引知识点总结//TODO

sex列不适合创建索引,只有男女两个取值
取值相对唯一的列适合做索引
索引的底层使用B+树
索引失效的场景
聚簇索引和非聚簇的区别
回表查询
联合索引
最左前缀原则
索引下推
。。。

对于百万/千万/亿万数据查询优化:
1、索引是性价比最高的解决方案,索引是数据库自带的机制
2、做分库分表
3、做缓存
4、走搜索引擎,ES技术…

三、数据库事务//TODO

– 数据库事务
什么是事务
事务的四大特性
四种隔离级别
锁机制

– autocommit自动提交更新,有ON和OFF两个取值,ON表示开启,OFF表示关闭
– 默认值是ON
SET autocommit = off;

有了事务机制后,我们可以在应用层(Java)编写流程控制,来控制事务提交或回滚的逻辑
在应用层的逻辑是:
如果事务内所有操作都成功了,执行COMMIT提交
如果事务内有未成功的操作,执行ROLLBACK回滚

数据库有一个事务异常结束的机制:回滚

eg:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值