MySQL常遇问题

MySQL常遇问题

1,执行sql语句卡死,杀死sql进程

,在命令行执行sql语句后卡死,不返回结果。
	例子:
		执行 truncate, drop 命令时,因之前有其他操作命令导致数据表加表锁,后续命令无法执行
	解决:
		查看输入mysql执行进程列表
			show processList	
		将异常进程杀死
			kill kid [进程列表主键]

2,事务的特性

	,特性:
		原子性:事务最小的单位不允许分割,要么执行成功,要么执行失败。
		一致性:过程中若有执行失败的结果,则统一回滚【要通过全通过,否则反之】
		持久性:事务提交后修改的数据是持久的,不会因为故障收其影响
		隔离性:数据库并发时,事务内所操作的数据不会被另一事务所有修改

3,事务的隔离级别

	,隔离级别
		读取未提交【read uncommited】:最低的隔离级别,允许读取未提交的数据变更(开启事务后,未提交事务前,所修改的数据),可能造成 脏读,不可重复度,幻读
		读取已提交【read committed】:允许读取并发事务已经提交的数据,可避免脏读,可能造成 不可重复读,幻读
		可重复度【repeatable read】:对同一字段多次读取的结果都是一致的,除非本身事务修改,可避免脏读,不可重复读,可能造成 幻读
		序列化【serializable】:最高的隔离级别,完全服从ACID的隔离级别,依次按照事务的顺序进行执行
	,语法
		查看当前隔离级别 【默认为 repeatable read】
			show variables like '%tx_isolation%'
		修改事务隔离级别
			set session transaction isolation level   +隔离级别【read uncommitted】【当前会话】
			set global transaction isolation level   +隔离级别【read uncommitted】【系统】
	,各隔离级别的举例
		脏读:
			过程
				事务A,开启事务,修改表中id为1的记录,未提交事务
				事务B,开启事务,查询id为1的记录【此时的记录为事务A中修改的数据】,提交事务
			结果:
				造成脏读,原因事务B中获取到事务A中事务未提交的修改记录
		,不可重复读
			过程
				事务A,开启事务,查询id为1的记录,然后执行事务B,再次查询id为1的记录,未提交事务
				事务B,开启事务,修改id为1的记录,并提交事务
			结果
				执行事务B前与执行后查出的数据是不一致的。
		,幻读【与不可重读类似】
				事务A,开启事务,查询表中记录条数,然后执行事务B,再次查询表中记录条数,未提交事务
				事务B,开启事务,想表中添加记录数,并提交事务
			结果
				执行事务B前与执行后查出的数据是不一致的。

4,隔离级别详解

4.1,,隔离级别修改

	查看当前隔离级别 【默认为 repeatable read】
		show variables like '%tx_isolation%'
	修改事务隔离级别
		set session transaction isolation level   + 隔离级别【当前会话】
		set global transaction isolation level   + 隔离级别【系统】

4.2,,隔离级别现象模拟

4.2.1,读未提交【read uncommitted】【会产生 脏读,不可重复读,幻读】
    事务A·
事务A
    事务B
事务B

4.2.2,读已提交【read committed】【会产生 不可重复读,幻读】
    事务A·
事务A
    事务B
事务B
4.2.3,可重复读【repeatable read】【会产生 幻读】
    事务A·
在这里插入图片描述
    事务B
![在这里插入图片描述](https://img-blog.csdnimg.cn/b1823919a5b4472ebc44b2e24eb6ed6a.jpeg在这里插入图片描述

总结

参考文档

MySQL事务隔离级别

补录

  第一节,MySQL索引的使用及原理
  第二节,MySQL常用语法
  第三节,MySQL常遇问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值