热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

数据库事务轻松走进数据库系列之十

事务的概念:SQL语句中一个执行单元,由一系列的sql语句组成。事务中的操作语句可作为一个不可分割的整体,要么全部执行,要么全部不执行。事务好比把一系列的相关的SQL语句捆绑在一起,一起执行,执行失败还可以人性化的回滚到操作之前,或者回滚到你

事务的概念 :SQL 语句中一个执行单元,由一系列的 sql 语句组成。事务中的操作语句可作为一个不可分割的整体,要么全部执行,要么全部不执行。 事务好比把一系列的相关的SQL 语句捆绑在一起,一起执行,执行失败还可以人性化的回滚到操作之前,或者回滚到你

事务的概念:SQL 语句中一个执行单元,由一系列的sql语句组成。事务中的操作语句可作为一个不可分割的整体,要么全部执行,要么全部不执行。事务好比把一系列的相关的SQL 语句捆绑在一起,一起执行,执行失败还可以人性化的回滚到操作之前,或者回滚到你设置的保存点处。引入事务,使我们对数据库操作更加简单,且保证 了数据库的数据完整性。

在这个封装好的事务中,有完善的机能。

事务的分类:隐性事务,显式事务,自动提交事务。

各种事物的区分:

显式事务:有明显的sql语句标识:begin transaction开始和committransaction或者rollback transaction结束。

隐性事务(complicit transaction):1、在setimplicit_transaction on 语句之后进入隐性事务模式。

2、启动语句: altertableopendroptruncate tableinsertdeleteselectcreategrantrevokefetchupdate。首次执行上述语句后,自动进入隐性事务,知道出现结束事务语句。

自动提交事务:一个sql语句完成都算是一个自动提交事务。成功完成,则提交成功,没有成功执行sql语句,则回滚该语句。这就是自动提交事务的功能。

注意:一般有明显的标志语句就是显示事务,其次是一些隐式事务的启动语句,暗示着隐式事务,在没有显式事务和隐性事务的时候才是发生自动提交事务。

事务的主要作用避免数据的不一致。(触发器)

事务定义的语


为了更详细的了解事务是一系列SQL 语句的组成,我们再来看一个事务的简单例子。这个例子中,我们在部门表中把后勤部删除,同时也从员工表中把属于后勤部的员工给删除了,这是两天SQL 语句组成的事务,因为是一连串事件,所以封装在一个事务中,一起执行,这样就保证了数据的完整性,一致性。



事务回滚


事务在执行中,并不是每次都可以成功,由于一些原因,执行不成功,那么就是这个事务无法提交,为了保证数据的完整性,我们要执行事务回滚。打个比方,大家都在淘宝买东西,我们选好颜色,款式,数量后,提交订单,这就是一个事务,你的购物在店主那里都有记录,这就是一个事务,如果,你在操作过程中出现问题了,网页断开,或是停电,无法提交,那么你之前进行的操作也就不会保存,再次登入的时候,这些信息还需要填写。这就是事务回滚,他会自动回滚到操作之前。

语法:rollback transaction transaction_name|savepointname

其中,transaction_name是回滚到事务操作之前。

savepointname 是回滚到特点的位置,叫做保存点,保存点需要手动设置。

设置保存点

save transaction savepointname


在整个事务中,顺序是很重要的,先执行什么,后执行什么。保存点设置就是如此,在执行完那步之后设置保存点,那么事务就会回滚到设置保存点之前的那个操作。

最后让我们来看一个完整的例子,有事务封装,有保存点的设置,这个事务提交失败后,会回滚到删除完后勤部的位置。

一下事务的完整操作:

分布式事务(distributed transaction

前边讲的事务是处理一个服务器的数据,涉及到多个服务器的时候用到一类新的事物——分布式事务。

使用分布式服务器需要首先启动MSDTC服务。

执行时将begin transaction换成begin distributed transaction即可。



推荐阅读
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • 解决Sharepoint 2013运行状况分析出现的“一个或多个服务器未响应”问题的方法
    本文介绍了解决Sharepoint 2013运行状况分析中出现的“一个或多个服务器未响应”问题的方法。对于有高要求的客户来说,系统检测问题的存在是不可接受的。文章详细描述了解决该问题的步骤,包括删除服务器、处理分布式缓存留下的记录以及使用代码等方法。同时还提供了相关关键词和错误提示信息,以帮助读者更好地理解和解决该问题。 ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
author-avatar
玉龙惊云诱惑_786_286
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有