mysql索引和事务快速了解

mysql索引和事务快速了解

此篇文章经过word总结直接粘贴的文本。为个人学习心得
– 创建表,名为mytable,name字段添加索引
CREATE TABLE mytable(id int,name VARCHAR(50),index myindex(name(50)))
– 创建表,名为mytable2
CREATE TABLE mytable2(id int,name varchar(20))
– 创建索引 表为mytable2的name字段
CREATE INDEX myindex on mytable(name(50))
ALTER table mytable ADD INDEX myindex(name)
– 查询表为mytable的索引
SHOW index from mytable
– 删除索引
DROP index myindex ON mytable
ALTER TABLE mytable DROP INDEX myindex
– 通过 EXPLAIN 分析 SQL 是否使用到索引,key值不为null,说明用到索引。
explain select * from mytable where name = ‘jack’
索引分类:主键,唯一,普通,全文,组合索引
适合建立索引的情况:
1:主键自动建立索引
2:经常查询的列
3:作为排序的列
4:查询中与其他表关联的字段,外键关系建立索引
5:高并发条件下倾向组合索引
6:用于聚合函数的列
不适合建立索引的情况:
1:经常增删改的列
2:大量重复的列
3:表数据太少
索引失效的情况:
1:组合索引的列值为null
2:在一个select语句中所以只能用一次
3:like语句的’%%’,开头为%会失效
4:查询中使用不等式>,<,!=
5:查询中使用is null,is not nul
6:字符串不加单引号
7:or连接多个条件中有一个列没有加索引就会失效
事务:
一个最小的不可再分的工作单元;通常一个事务对应一个完整的业务
事务的特征:
原子性(A),一致性©,隔离性(I),持久性(D)
事务的隔离级别:
读未提交(read uncommitted),读已提交(read committed)
,可重复读(repeatable read),串行化(serializable)
在这里插入图片描述
脏读:
读取别人未提交的操作
不可重复读:
别人更改数据,自己查询时会相应更改。
幻读:
可以读取别人提交后的数据
串行化:
一个事务只能同时一人操作。
– 手动开启事务
START transaction
– 提交事务
commit
– 回滚事务
rollback
– 设置事务隔离级别为读未提交
set SESSION transaction isolation level read uncommitted
– 设置事务隔离级别为读已提交
set SESSION transaction isolation level read committed
– 设置事务隔离级别为可重复度
set SESSION transaction isolation level repeatable read
– 设置事务隔离级别为串行化
set SESSION transaction isolation level serializable
锁的作用:
锁资源
锁的分类:
乐观锁,悲观锁
乐观锁:
处理过程中不加锁,更新后再去判断是否冲突
悲观锁:
每次进行处理操作都要通过获取锁才能对相同数据的操作
锁的实现主要有两种:
共享锁(S),排它锁(X)
共享锁:
读锁,别人只可以读不可以写,别也可以设置共享锁。
排它锁:
写锁,别人不可以读不可以写。直到该事务结束。期间其他人不可以设置锁
锁的粒度分类:
表级锁:
开销小,加锁快,资源占用高
行级锁:
开销大,加锁慢,资源占用低,对其他用户影响小
页面锁:
开销介于表锁与行锁之间,会出现死锁

发布了1 篇原创文章 · 获赞 2 · 访问量 80

猜你喜欢

转载自blog.csdn.net/weixin_46364022/article/details/104399077