当前位置: 首页 > news >正文

深圳购物网站建百度搜索风云榜游戏

深圳购物网站建,百度搜索风云榜游戏,wordpress 适合程序员主题,wordpress grace主题目录 一、事务的概念 二、事务的核心特性 三、事务操作中的常见BUG 3.1 脏读 3.2 不可重复读 3.3 幻读 四、隔离级别 五、使用事务 一、事务的概念 “事务”是指一组操作,在逻辑上是不可分割的,组成这组操作的各个语句,或者全部执行成…

目录

一、事务的概念

二、事务的核心特性

三、事务操作中的常见BUG

3.1 脏读

3.2 不可重复读

3.3 幻读

四、隔离级别

五、使用事务


一、事务的概念

        “事务”是指一组操作,在逻辑上是不可分割的,组成这组操作的各个语句,或者全部执行成功,或者全部执行失败。

        不同的环境对“事物”这一概念有不同的称呼,在数据库中,这个概念就被称为“数据库事务”。


二、事务的核心特性

事物具有以下特性:

核心特性说明
原子性通过事物,将多条语句组合在一起,使这些语句在执行的时候不可被分割。
一致性事务中的各个操作语句,或者全部执行成功,或者全部执行失败,保持了执行结果的一致。
持久性事务本身也是由操作语句组成的,每一条执行成功的语句带来的数据修改都是持久化存在的。
隔离性用于解决多事务并发执行时可能出现的BUG,隔离性提高了数据的准确性,但降低了程序的运行速度。

三、事务操作中的常见BUG

3.1 脏读

介绍脏读,就像名字一样,意思是读到的数据是脏的,是被污染的。脏读是由于数据库中的数据没有被正确地更新,导致在事务提交时读取的数据是错误的。
举例事务1持续更新数据A,在事务1未更新完毕时,事务2读取了数据A。此时数据A仍然在被事务1改动,那么事务2读取的数据就是一个错误的数据。
解决方案降低事务的并发,当发生写操作时,其他事务不能读,直到写操作执行完毕。(写的时候不能读)

3.2 不可重复读

介绍不可重复读是由于数据库中的数据虽然被正确地更新,但是因为在读的过程中发生并发访问,导致数据再次被更新,此时事务就根据读取的错误数据提交了。
举例事务1更新数据A,并正常提交。事务2开始读操作,多次读取数据A。但发生了并发访问,事务3再次更新数据A。此时事务2还在持续读取数据A,但得到的数据已经发生改变。
解决方案降低事务的并发,当发生读操作时,其他事务不能写,直到读操作执行完毕。(读的时候不能写)

3.3 幻读

介绍幻读和不可重复读十分相似,都是在读数据的过程中,数据发生改变而导致读取的数据前后不一致,只是幻读获得的错误数据规模更大,比如幻读带来了错误的结果集。个人粗略的认为幻读是不可重复读的进阶版。
举例事务1更新数据A,并正常提交。事务2开始读操作,多次读取包含数据A在内的数据集合,并根据数据集合进行了各种运算,产生了结果集。事务3并发访问将数据A删除了,此时事务2读取的数据集合就不包括数据A了,那么此时事务2完成提交后得到的结果集就与第一次不同了,就好像产生了幻觉一样(通俗来讲就是,“见了鬼了怎么两次得到的结果不一样?”)。
解决方案通常采用串行化的事务执行方式,即不再发生任何并发。

四、隔离级别

        从上文可以得知,使用事务时可能出现一些BUG。虽然出现了BUG,但一般都会有相应的解决方法,而MySQL中也提供了一些“锦囊妙计”来帮助使用者避免BUG,这就是隔离级别

MySQL提供了四种隔离级别:

隔离级别说明并行程度隔离程度效率数据准确度可能出现的BUG
read uncommitted读未提交。没有任何限制。最高最低最高最不准确脏读、不可重复读、幻读
read commited读已提交。写操作加锁。不准确不可重复读、幻读
repeatable read可重复读,默认的隔离级别。读操作加锁,写操作加锁。准确幻读
serializable串行化。读操作加锁,写操作加锁。不并行最高最低最准确

        以上四种隔离级别供使用者根据需求进行使用和调整,以适应不同情况。越往下隔离级别越高,隔离级别高能够带来准确的数据,但同时会导致程序执行效率变低,这就需要程序员根据不同的实际情况进行取舍了。


五、使用事务

使用事务的步骤:

开启事务start transaction;
打包SQL语句由多条SQL语句组成一个逻辑上的不可分割的整体;
回滚或提交

rollback/commit;

回滚(rollback):是指在事务提交时,如果发生错误,可以回滚到事务开始时,撤销所有已经执行的SQL语句。回滚可以用于确保数据的一致性,避免数据不一致的情况。使用Java进行编程时, rollback 一般会在代码里抛出异常,cry/catch 捕获时使用。简单来讲,回滚代表SQL全部执行失败。

提交(commit):是指在事务完成时,可以确认所有SQL语句都已经成功执行,确认将事务的数据写入到数据库中。简单来讲,提交代表SQL全部执行成功。


阅读指针 -> 《MySQL -- 什么是JDBC?如何使用JDBC进行编程?》

<MySQL> 什么是JDBC?如何使用JDBC进行编程?-CSDN博客介绍了什么是JDBC,以及演示了JDBC的基础使用。https://blog.csdn.net/zzy734437202/article/details/134473626

http://www.hkea.cn/news/720569/

相关文章:

  • wordpress 制作下载优化关键词怎么做
  • 宁波网站建设哪个公司好百度爱采购推广怎么入驻
  • 重庆市建设工程信息网特种作业企业网站seo多少钱
  • 域名备案做电影网站制作免费个人网站
  • 公司网络营销方案优化设计七年级上册数学答案
  • 网站建设策划方案网址搜索引擎
  • 艺术培训学校系统网站怎么做百度优化是什么
  • 自己的网站做飘窗百度推广账号登录入口
  • 国内好的网站建设国内外十大免费crm软件推荐
  • 淄博品质网站建设百度销售推广
  • 网站建设学习内容网站模板哪家好
  • 建立b2b网站成本微信营销平台系统
  • 学做衣服网 缤纷网站手机百度ai入口
  • 点餐系统网站建设画质优化app下载
  • 上海都有哪些企业公司seo网站seo
  • 进一步加强政府网站建设网站建设介绍ppt
  • 做网站的设计软件上海seo推广外包
  • 中国工程局人才招聘网福建seo推广方案
  • 深圳南山做网站的公司百度投诉中心
  • 辽宁建设工程信息网业绩认定武汉网站优化公司
  • 莱芜都市人才网上海网站seo公司
  • 广州做鞋的网站怎么让某个关键词排名上去
  • 温州平阳县网站建设兼职东莞网络推广哪家公司奿
  • 做单页网站价格微信朋友圈广告在哪里做
  • 濮阳家电网站建设一般开车用什么导航最好
  • html5 图片展示网站大作设计网站
  • 河北正规网站建设比较百度一下你就知道官页
  • 企业网站建设哪家服务好福州网站关键词推广
  • 惠州悦商做网站软件开发一般需要多少钱
  • 做衣服外单网站优化大师官方正版下载