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

河北邯郸seo网站建设网站优化专业网站的定义

河北邯郸seo网站建设网站优化,专业网站的定义,做物流网站有哪些内容,asp网站建设 文献一.什么是事务事务就是把一组SQL语句打包在一起,这组语句要么一起执行成功,要么一起执行失败,用来维护数据的完整性和一致性。二.事务的ACID特性原子性(A):一个事务中的所有操作要么全部成功,要么全部失败,…

一.什么是事务

        事务就是把一组SQL语句打包在一起,这组语句要么一起执行成功,要么一起执行失败,用来维护数据的完整性和一致性。

二.事务的ACID特性

原子性(A):

一个事务中的所有操作要么全部成功,要么全部失败,没有执行了一半发生错误执行中止这种情况,当事务执行出问题之后会回滚到事务执行开始前的状态,就像是这个事务并没有开始执行一样。

一致性(C):

在事务执行前和执行后并不会破环数据库的一致性,所以数据必须仍要符合数据的的预设规则,这表明在数据执行前后的数据必须是合理的。

隔离性( I ):

事务的执行是可以并发的,这说明事务有可能对同一个数据进行修改或者读写,此时隔离性就可以很好的防止由于事务执行的交叉导致的问题,隔离性有四个等级来确保在不同情况下数据库的性能和安全。

持久性(D):

事务的提交结果是永久生效的,并不会因为系统故障而导致消失。

三.事务的控制语句

开启事务:start transcation  或  begin

提交事务:commit

事务回滚:rollback

语句实战应用:

我们首先创建一个表

create database test;
use test;
create table test(id int, name varchar(20),money int)charset utf8;
insert into test values(1,'张三',500),(2,'李四',1000),(3,'王五',2000);
select*from test;

然后我们使用事务打包语句,将 王五 的 500 元送给 张三,执行以下事务:

start transaction;
update test set money = money+500 where name = '张三';
update test set money = money-500 where name = '王五';
commit;

 得到结果:

此时我们如果加入回滚,结果会不会不一样呢?在 王五 给了 张三 500之后,我们让 张三 还给王五500,但此时加入回滚机制:

start transaction;
update test set money = money-500 where name = '张三';
update test set money = money+500 where name = '王五';
rollback;
commit;

此时我们会发现事务是没有进行提交的,张三并没有给王五500,我们称这种机制为回滚。

 保存点:

savepoint ***(设置保存点) rollback to ***(回归至保存点)

实例:

在此基础上,我们执行两个操作,首先是让让张三和李四的 money 都增加500,其次是让张三和王五的 money 减少500,我们在这两个操作中间设置保存点,在执行完第二个操作后让事务回滚带保存点:

update test set money = money+500 where name = '张三';
update test set money = money+500 where name = '李四';
savepoint cur;
update test set money = money-500 where name = '张三';
update test set money = money-500 where name = '王五';
rollback to cur;
commit;

我们可以发现,只有张三和李四增加了500,王五并没有变化,此时就是保存点发生了作用。

四.事务的自动/手动提交

通常情况下,MySQL事务的提交是自动的,比如我们在对某个数据进行更改,提交的时候,系统会自动创建一个事务在执行语句结束之后自动提交,在发生异常的时候自动回滚。

我们可以通过以下语句来查看事务是否自动提交:

show variables like 'autocommit';

 

此时 Value 显示 ON 就代表自动提交已经打开了。

设置事务自动提交的方式:

set autocommit = 1;
set autocommit = ON;

设置事务手动提交的方式:

set autocommit = 0;
set autocommit = Off;

注意事项:

1.当我们的事务提交之后,是无法回滚的。

2.当我们开启事务之后,我们必须通过 commit 来提交事务才具有持久性,这与是否设置了保存点没有关系。

3.当设置了事务手动提交的时候,不用显示开启事务,我们需要手动通过 commit 来提交事务和  rollback 回滚。

五.事务的隔离级别:

隔离性越强,并发越弱,效率越低,准确率越高

隔离性越差,并发越强,效率越高,准确率越低

读未提交( Read Uncommitted ):可能引发:脏读,不可重复读,幻读

读已提交( Read Committed ):可能引发:不可重复读,幻读

可重复读( Repeatable Read ):可能引发:幻读

串行化( Serializable ):无

脏读:指的是两个事务并发执行,其中一个事务读取到了另一个事务未提交的数据,如果另一个事务发生异常导致回滚,此时我们的这个事务读取到的数据就是无效的。 读已提交就解决了这个问题:事务只能读取提交之后的数据。

不可重复读:当事务 A 读取数据 cur 之后,事务 B 对 cur 进行了修改,此时事务 A 再次读取数据 cur ,就会导致同一个事物在相同的条件下读取到了同一个数据的两个值,此时称为不可重复读。

幻读:当事务A读取一个结果集之后,事务B在结果集中插入了一条数据,此时事务A再次读取结果集之后,会发现两次查询结果不一致,此时称为幻读。

查看隔离级别的方式:

数据库的隔离级别默认是可重复读。

select @@GLOBAL.transaction_isolation;

http://www.dtcms.com/a/540614.html

相关文章:

  • Python测试题2
  • WordPress 上传图片报错:明明是 PNG,却提示「请转换为 JPEG 或 PNG 格式」?
  • annotation-logging-guide
  • 没有公司做网站重庆网站推广入口
  • 管理k8s的资源类型(PV/PVC)的脚本
  • 【记录】飞书多维表格|做自动显示当前填写情况(包括填写人数、未填写情况、最高分和平均分)的收集表
  • 清除入侵痕迹(winLinuxweb)
  • 找设计师的网站淘宝客 网站建设
  • 第六部分:VTK进阶(第175章 并行 IO管线与检查点)
  • 河南海绵城市建设网站wordpress中文版书籍
  • Opencv(三): 二值化
  • GitHub使用技巧——上传本地项目
  • 网站建设用途一个旅游网站建设需求分析
  • 甜品网站网页设计代码网上免费推广
  • 渗透测试工具 windows上搭建vmware kali-linux
  • ecstore等产品开启缓存-后台及前台不能登录原因-setcookie+session问题
  • 哨兵原理、Redis分片、Redis数据结构、内存回收、缓存问题以及分布式事务相关内容(CAP、BASE、AT脏写及其解决、TCC、最大努力通知)
  • Windows图标修复--缓存重建教程
  • 服务器上用Slurm 管理训练bash 脚本任务,申明使用GPU
  • 上海小程序网站开发公司wordpress国外主题下载地址
  • 新城镇建设官方网站kali建设网站
  • 便携式el检测仪:确保光伏组件的质量与性能稳定
  • 英一2015年真题学习笔记
  • Docker 部署银河麒麟(Kylin Linux)全流程教程
  • GPT、DeepSeek等大语言模型应用
  • 大语言模型基础LLM:Transformer和大模型
  • 本地用docker开发的php 程序如何部署到阿里云的ecs上
  • html css js网页制作成品——一念关山HTML+CSS网页设计(5页)附源码
  • BuildingAI二开 Coze套餐管理页面PRD
  • 加强学院网站的建设与管理一个完整的外贸流程