当用户访问量增长时,数据库往往是一个系统的性能瓶颈,但不光光是性能瓶颈,数据安全也会随之浮现,这时候锁机制就非常有必要。

并发造成的数据安全问题主要分为3个方面:脏读、幻读、不可重复读

一. 脏读

脏读就是一个事务读取到了另一个事务未提交的数据。

时间线 事务1 事务2

1 begin;

2 select * from lock where id = 1;

3 begin;

4 update lock set name='dirty';

6 select * from lock where id = 1;

7 commit; commit;

二. 幻读

幻读就是一个事务读到了另一个事务insert的数据

时间线 事务1 事务2

1 begin;

2 select * from lock where id > 1;

3 begin;

4 insert lock select 2;

5 commit;

6 select * from lock where id > 1;

7 commit;

三. 不可重复读

不可重复读就是多次读取统一数据返回的结果不一致。同脏读不同,这是读取已经提交的数据;同幻读也不同,这边是更新数据,幻读是插入数据。

时间线 事务1 事务2

begin;

select * from lock where id = 1;

begin;

update lock set name='non-rr';

commit;

select * from lock where id = 1;

commit;

MySQL通过对事务的隔离来解决以上三种问题

共有4种隔离级别

隔离级别 脏读 幻读 不可重复读

未提交读(RUC) 是 是 是

已提交读(RC) 否 是 是

可重复读(RR) 否 是 否

可串行化 否 否 否

MySQL通过锁机制来实现事务的隔离

锁的分类如下

MySQL中锁的必要性_MySQL中的锁之一:锁的必要性及分类相关推荐

  1. mysql中的锁的指令_mysql中的锁

    MYSQL不同的存储引擎支持不同的锁的机制 MyISAM 支持表锁,InnoDB支持表锁和行锁 表锁,行锁比较 表锁:开销小,加锁快:不会出现死锁:锁定力度大,发生锁冲突概率高,并发度最低 行锁:开销 ...

  2. mysql中写锁定实例_MySQL中的锁

    我学习MySQL是半路出家,刚开始接触的时候,只知道数据库的增删改查和事务,直到有一天数据库突然爆出(1205, 'Lock wait timeout exceeded; try restarting ...

  3. mysql排他锁怎么用_MySQL 中的共享锁和排他锁的用法

    在 MySQL 中的行级锁.表级锁和页级锁中,咱们介绍过,行级锁是 MySQL 中锁定粒度最细的一种锁,行级锁能大大减少数据库操作的冲突.行级锁分为共享锁和排他锁两种,本文将详细介绍共享锁和排他锁的概 ...

  4. mysql临时关闭索引功能_MYSQL中常用的强制性操作(例如强制索引)

    mysql常用的hint 对于经常使用oracle的朋友可能知道,oracle的hint功能种类很多,对于优化sql语句提供了很多方法.同样,在mysql里,也有类似的hint功能.下面介绍一些常用的 ...

  5. mysql中的强制索引_MYSQL中常用的强制性操作(例如强制索引)

    mysql常用的hint 对于经常使用oracle的朋友可能知道,oracle的hint功能种类很多,对于优化sql语句提供了很多方法.同样,在mysql里,也有类似的hint功能.下面介绍一些常用的 ...

  6. mysql 修改表结构方案_MySQL中修改表结构时需要注意的一些地方

    MySql 在修改表结构的时候可能会中断产品的正常运行影响用户体验,甚至更坏的结果,丢失数据.不是所有的数据库管理员.程序员.系统管理员都非常了解Mysql能避免这种情况.DBA会经常碰到这种生产中断 ...

  7. mysql 事务隔离详解_MySQL 中事务、事务隔离级别详解

    一.事务的概念 1.事务的概念 2.在mysql中哪些存储引擎(表类型)支持事务哪些不支持 3.事务的四个属性 4.mysql事务的创建与存在周期 5.mysql行为 6.事务的隔离性和性能 7.my ...

  8. mysql的force的作用_mysql中force Index等一些不是很常用的sql优化介绍

    oracle的hint功能种类很多,对于优化sql语句提供了很多方法. 在mysql里,也有类似的hint功能. 下面为大家介绍一些比较常用的,供大家学习参考. 1.强制索引 FORCE INDEX ...

  9. 小米id锁状态查询_Mysql中的三类锁,你知道吗?

    点击上方"码农沉思录",选择"设为星标" 优质文章,及时送达 导读 正所谓有人(锁)的地方就有江湖(事务),人在江湖飘,怎能一无所知? 今天不聊江湖,来细说一下 ...

  10. mysql不同连接的事务_mysql中不同事务隔离级别下数据的显示效果--转载

    事务是一组原子性的SQL查询语句,也可以被看做一个工作单元.如果数据库引擎能够成功地对数据库应用所有的查询语句,它就会执行所有查询,如果任何一条查询语句因为崩溃或其他原因而无法执行,那么所有的语句就都 ...

最新文章

  1. celery源码分析-wroker初始化分析(上)
  2. mybaits错误解决:There is no getter for property named 'parentId ' in class 'java.lang.String'
  3. Codeforces 771C
  4. python怎么用matplotlib_Python Matplotlib 绘图使用指南 (附代码)
  5. 【PC工具】200416最终百度网盘——最终下载方法及注意事项,代理是什么
  6. 目标4个9的可用性?试试用 Prometheus 和 Grafana记录服务可用时间
  7. linux 2.6 hash表作用,高性能分布式哈希表FastDHT介绍及安装配置
  8. The history and design philosophy of Spring
  9. 通过set赋值,与select赋值的区别
  10. pandas小记:pandas数据规整化-正则化、分组合并及重塑
  11. 计算机软件实习之校园一卡通管理系统
  12. 有了这6款浏览器插件,浏览器居然“活了”?!媳妇儿直呼“大开眼界”
  13. 免焊vga3加6接线图_高清 VGA免焊接头3+6+9 VGA快速接头 免焊公头 3排15针 15针插头...
  14. mysql调查问卷数据库设计_客服-问卷调查-问题答案表 - 数据库设计 - 数据库表结构 - 果创云...
  15. Duplicate Cleaner Pro v5.0.13 电脑重复文件查找清理工具
  16. SpringMVC入门上机实验,基于SpringMVC数据绑定的学生成绩信息管理
  17. Apollo配置说明
  18. python自动化(四)app自动化:2.Android Studio
  19. 猿创征文|unity中的MVC编程思想基础
  20. 【非参数统计】2.1广义符号检验(R语言)

热门文章

  1. C#设计模式---迭代器模式(Iterator Pattern)
  2. Codeforces976D Degree Set 【构造】
  3. 错误与异常_2-7选择题
  4. 几种经典的hash算法
  5. POJ 3415 (后缀数组)
  6. python中关于sklearn 0.18的错误—— cannot import name comb
  7. [转载] 用Python进行简单的文本相似度分析
  8. Spring的@Transactional事务注意事项
  9. hadoop2.7的目录结构
  10. cf519D . A and B and Interesting Substrings 数据结构map