Mysql
文章平均质量分 86
luffylv
这个作者很懒,什么都没留下…
展开
-
脏读、不可重复读和幻读
1、幻读(Phantom)所谓幻读,就是指在同一个事务中,同一个查询执行两次,在两次查询之间,有另一事务插入一个新记录或更新某一行并提交,并且这一行满足查询事务中的WHERE条件,导致第二次查询比第一次查询多一条记录。这种现象称为幻读,第二次查询多出来的这一行称为幻读行。幻读比不可重复读更难防范,因为锁定第一个查询结果集的所有行并不能防止幻读现象的产生。串行化读隔离级别下可以防止幻读,可重复读、读已提交、读未提交隔离级别下允许幻读。假设child表的id列上有一索引。此时,读取并锁定表中所有原创 2021-07-28 17:38:42 · 556 阅读 · 0 评论 -
MySQL的事务隔离级别
事务隔离是数据库处理的基础之一。隔离(Isolation)是ACID中I的首字母缩写。隔离级别是在多个事务同时进行更改和执行查询时,对性能与结果的可靠性、一致性和再现性之间的平衡进行微调的设置。InnoDB提供了SQL:1992标准中描述的所有四个事务隔离级别:READ UNCOMMITTED,READ COMMITTED,REPEATABLE READ和SERIALIZABLE。InnoDB的默认隔离级别是REPEATABLE READ。可以使用SET TRANSACTION语句更改单个会话或所有后续原创 2021-07-28 11:12:59 · 92 阅读 · 0 评论 -
InnoDB中不同SQL语句设置锁的情况总结
在Mysql中,锁定读、更新、删除操作通常会对SQL语句处理过程中扫描到的每条索引记录设置记录锁。语句中是否存在排除该行的WHERE条件并不重要。InnoDB不记得确切的WHERE条件,只知道扫描了哪些索引范围。next-key锁通常会阻塞往记录之前的间隙插入数据。可以显示禁用间隙锁,使得next-key锁不可用。事务的隔离级别也会影响锁的设置。如果在搜索中使用了二级索引,并且在二级索引上设置的是排他锁,InnoDB还会检索相应的聚集索引,并在聚集索引上也设置锁。如果在SQL语句中没有使用合适的索引,此翻译 2021-07-19 23:09:14 · 289 阅读 · 0 评论 -
InnoBD中的几种锁
前段时间遇到线上应用报死锁问题,于是对于Mysql的锁相关问题产生了兴趣,鉴于之前不太了解这块,特此根据官网整理锁相关知识。InnoDB的锁共享锁和排它锁(Shared Locks && Exclusive Locks)InnoDB实现了标准的行级锁,其中有两个类型的锁,共享锁(S)和独占锁(X)(也称为排它锁)。共享锁(S)允许持有锁的事务读取一行。 排它锁(X)允许持有锁的事务更新或删除一行。如果事务T1持有r行的S锁,然后来自某个不同是事务T2也请求对r行上锁的处理翻译 2021-07-13 14:15:38 · 512 阅读 · 0 评论 -
分析处理遇到的Mysql死锁问题
上周遇到线上死锁问题,特此总结记录一下,该情况只是某一特定场景下,遇到死锁问题还要具体问题具体分析。场景上周末,连续两天线上的某每小时执行一次的定时任务A在凌晨两点左右报了死锁异常(每天出现了四次死锁)。异常信息如下:初步分析首先,出现死锁的这个表做了分库分表,根据编号进行分片。四台服务器同时执行该定时任务,且根据某编号进行分片,也就是说不会有两个及以上该定时任务应用同时操作同一张表,正常来说应该不会出现死锁的情况。初步怀疑可能是别的也在凌晨两点执行的分片定时任务B也操作了该表,导致A.原创 2021-06-29 22:20:23 · 626 阅读 · 0 评论 -
解决MySQL服务无法启动,本地计算机上的MySQL服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止。
问题描述安装MySQL后启动服务,显示MySQL服务无法启动,如下图。尝试通过计算机管理->服务,直接启动MySQL,显示本地计算机上的mysql服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止。的告警。分析原因回想了下安装过程,可能是在执行mysqld --initialize时未执行完就关闭命令提示符导致MySQL未完成初始化所致。解决方式1、若MySQL安装目录下无data目录,则新建一空目录,目录名为data;若有data目录,则清空data目录。2、打开命令提原创 2021-01-20 23:19:34 · 14372 阅读 · 12 评论