七寸殇

  • 主页
  • 随笔
所有文章 友链 关于我

七寸殇

  • 主页
  • 随笔

数据库脏读、不可重复读、幻读

2018-02-07

脏读

数据库脏读是指当一个事务正在访问数据,并且对数据进行了修改/插入,而这种修改/插入你还没有commit到数据库中,这时,另外一个事务也访问这个数据,然后前一个事务因为一些原因(比如后面操作没有执行成功)rollback回滚了事务,导致事务2读取到了无效数据。

不可重复读

不可重复读指的是,一个事务1,多次读取同一数据,但是中间有事务2对数据进行了修改,导致是事务1前后读取到的数据不一样。

幻读/幻影读

幻读指的是,一个事务1对查询的的结果集进行修改操作,事务2又插入了一行满足该条件的数据,导致事务1没有修改到事务2插入的这一行。

解决办法:
数据库事务的隔离级别有4个,由低到高依次为Read uncommitted 、Read committed 、Repeatable read 、Serializable ,这四个级别可以逐个解决脏读 、不可重复读 、幻读 这几类问题。

数据库隔离级别 脏读 不可重复读 幻读
Read uncommitted √ √ √
Read committed × √ √
Repeatable read × × √
Serializable × × ×

mysql查看数据库事务隔离级别

1
show variables like '%isolation%';

修改mysql数据库事务隔离级别

设置innodb的事务级别方法是:set 作用域 transaction isolation level 事务隔离级别,例如:
SET [SESSION | GLOBAL] TRANSACTION ISOLATION LEVEL {READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE}

1
2
3
mysql> set global transaction isolation level read committed; #全局的

mysql> set session transaction isolation level read committed; #当前会话

赏

谢谢你请我吃糖果

支付宝
微信
  • mysql
  • 数据库
  • 脏读
  • 不可重复读
  • 幻读

扫一扫,分享到微信

微信分享二维码
nginx添加反向代理
闲鱼pc端如何使用关键词搜索
© 2023 七寸殇
总访问量:, 页面访问量
  • 所有文章
  • 友链
  • 关于我

tag:

  • composer
  • 镜像
  • laravel
  • ab.exe
  • 性能测试
  • apache
  • 交换变量
  • 面试题
  • 位运算
  • 阿里云
  • git
  • django
  • python
  • hexo
  • blog
  • github
  • docker
  • docker-compose
  • eclipse
  • tomcat
  • 环境变量
  • requests
  • api
  • php
  • 下载完成
  • mysql
  • 数据库
  • 脏读
  • 不可重复读
  • 幻读
  • merge
  • 分支
  • 合并
  • abort
  • push
  • remote
  • pull
  • .gitignore
  • reset
  • hooks
  • redis
  • appends
  • 分页
  • paginate
  • header
  • response
  • linux
  • php7
  • nginx
  • 500错误
  • php.ini
  • display_errors
  • Auth
  • guard
  • session
  • 路由
  • route
  • validate
  • 验证
  • group_concat
  • concat
  • raw
  • 数据库查询
  • 一对多
  • 笛卡尔集
  • lnmp
  • find
  • 远程登录
  • 忘记密码
  • ThinkPHP
  • url重写
  • 路由重写
  • proxy_pass
  • 反向代理
  • foreach
  • 最后一个元素
  • get_cfg_var
  • ini_set
  • ini_get
  • ini_get_all
  • ini_restore
  • 反射
  • 类的所有方法
  • 命名规范
  • 闭包
  • 引用
  • pytesser
  • 图片识别
  • windows
  • tesseract-ocr
  • RESTful
  • 无状态
  • Statelessness
  • selenium
  • phantomjs
  • 爬虫
  • svn
  • 微信小程序
  • wxParse
  • 微信
  • 成语猜猜看
  • vagrant
  • while
  • 素数
  • 算法
  • ssh
  • setData
  • 上拉加载
  • log
  • 闲鱼
  • html

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

Make More Time