`

事务-只读事务

阅读更多
没有事务:保证了SQL语句级别的读一致性。
即在一条SQL语句执行期间,它只会看到执行前点的数据状态,而不会看到执行期间数据被其他SQL改变的状态。
存在的问题:比如你做一个报表查询,在执行完第一条sql的时候,执行第二条查询SQL,而这个之间有数据被改变了,第二条数据查询就有可能不一致


只读事务:保证了事务级别的读一致性
在该事务范围内执行的多条SQL都只会看到执行前点的数据状态,而不会看到事务期间的任何被其他 SQL改变的状态。

只读事务可以解决没有事务导致的一致性问题。

举例:
建表:
CREATE TABLE `t_pai` (
   `id` bigint(20) NOT NULL AUTO_INCREMENT,
   `name` varchar(10) NOT NULL,
   `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
   PRIMARY KEY (`id`),
   KEY `idx_update_time` (`update_time`)
 ) ENGINE=InnoDB AUTO_INCREMENT=46 DEFAULT CHARSET=utf8


客户端1:
SET autocommit =1;

INSERT INTO t_pai(NAME,update_time) VALUES ("1",NOW());

SELECT SLEEP(10) FROM DUAL;

INSERT INTO t_pai(NAME,update_time) VALUES ("2",NOW());

SELECT SLEEP(5) FROM DUAL;

INSERT INTO t_pai(NAME,update_time) VALUES ("3",NOW());

SELECT SLEEP(2) FROM DUAL;
INSERT INTO t_pai(NAME,update_time) VALUES ("4",NOW());


SELECT SLEEP(2) FROM DUAL;

INSERT INTO t_pai(NAME,update_time) VALUES ("5",NOW());

SELECT SLEEP(2) FROM DUAL;

COMMIT;


客户端2:
先执行:
START TRANSACTION READ ONLY;
SELECT * FROM t_pai;

反复执行:
SELECT * FROM t_pai;


输出:
查询不到数据。


客户端3:
SELECT * FROM t_pai;

反复执行,可以看到数据一条一条的插入,数据一致性被破坏

0
0
分享到:
评论

相关推荐

    【分布式事务----LCN】LCN原理及使用方式.docx

    智能识别创建不同的连接 对于只读操作、非事务操作LCN将不开启代理功能,返回本地连接对象,对于补偿事务的启动方将开启回滚连接对象,执行完业务以后马上回滚事务。 LCN连接重用机制 当模块在同一次事务下被重复...

    论文研究-移动广播环境中实时事务处理性能研究.pdf

    协议消除了移动只读事务和移动更新事务的冲突,使用动态调整串行次序技术,避免了不必要的事务重启动。降低了移动只读事务的响应时间。通过模拟仿真,对MVOCC-DA-2PV协议进行了性能测试,并与PVTO和HP2PL进行了比较...

    Spring事务测试题及原理

    此ppt中前半部分通过spring事务的60道题的测试,摸底对事务的掌握情况,后半部分,对spring中的事务属性(传播行为、隔离级别、回滚规则、事务超时、是否只读)进行说明

    主题:详解spring事务属性.doc

    我们在使用Spring声明式事务时,有一个非常重要的概念就是事务...事务属性通常由事务的传播行为,事务的隔离级别,事务的超时值和事务只读标志组成。我们在进行事务划分时,需要进行事务定义,也就是配置事务的属性。

    mysql存储过程事务管理简析

    1,MySQL的事务支持 1)MySQL的事务支持不是绑定在MySQL服务器本身,而是与存储引擎相关: Sql代码 代码如下: MyISAM:不支持事务,用于只读程序提高性能 InnoDB:支持ACID事务、行级锁、并发 Berkeley DB:支持...

    数据库的读读事务也会产生死锁

    前段时间有朋友问:SQL Server的AlwaysOn的辅助数据库默认会使用行版本快照控制来消除数据库上的读写事务阻塞和死锁问题  即使用户显式为查询设置了其他事务隔离级别,所有锁提示(Lock Hint)都会被忽略。  ...

    sails-mysql-transactions:带有mySQL事务支持的sailswaterline ORM

    它还提供以负载平衡的方式从一组只读副本中进行读取的功能。安装将sails-mysql-transactions添加到应用程序的package.json 。 如果您的软件包中尚未安装sails请不要直接运行install。 如果您已经安装了sails-mysql ...

    基于框架的Web开发-用户登录.docx

    在类上设置启用事务,只读。类里的方法,没有设置事务的,默认使用类的设置。需要增删改的方法,重新设置事务的readOnly 在类上设置启用事务,只读。类里的方法,没有设置事务的,默认使用类的设置。需要增删改的...

    mysql事务处理用法与实例代码详解

    1.MyISAM:不支持事务,用于只读程序提高性能 2.InnoDB:支持ACID事务、行级锁、并发 3.Berkeley DB:支持事务 一个事务是一个连续的一组数据库操作,就好像它是一个单一的工作单元进行。换言之,永远不会是完整...

    Prancer-Plugin-Database:Prancer-Plugin-Database 的只读发布历史记录

    如果您正在使用回调,那么这将变得非常重要,您将需要注意避免交叉事务或期望数据库连接或事务处于与回调之前相同的状态。 要使用数据库连接器,请在配置文件中添加如下内容: database: connection-name: ...

    spring3.2+strut2+hibernate4

    // 并且save方法的事物是必须的,find方法是只读的。 --> --------------------------------------------------------------------------- struts.xml <!--下述语句是将struts2交给spring管理 --> <!-- ...

    Spring.html

    是否只读: 默认false TransactionManagerStatus: 事务的一些状态 整合 Spring整合Junit 1.导入依赖spring-test 2.加注解:RunWith、ContextConfiguration 3.注入对象进行测试 Spring整合web 1....

    SQL语法大全

    EditMode 只读 只读 只读 只读 EOF 只读 只读 只读 只读 Filter 可读写 可读写 可读写 可读写 LockType 可读写 可读写 可读写 可读写 MarshalOptions 可读写 可读写 可读写 可读写 MaxRecords 可读写 可读写 可读写 ...

    powerbuilder

    PrintDefineFont() 功能定义打印作业使用的字体,对每个打印作业PowerBuilder支持八种字体。 语法PrintDefineFont(printjobnumber,fontnumber,facename,height,weight,fontpitch,fontfamily, italic,underline) ...

    MySQL数据库:锁定与解锁.pptx

    数据库编程 锁定与解锁 课程目标 了解 —— 锁定和解锁的概念; 掌握 —— 锁定和解锁的设置; 锁定与解锁 MySQL提供了LOCK TABLES语句来...【例】 在XS表上设置一个只读锁定。 LOCK TABLES XS READ; 说明:LOCK TABLE

    易语言-sqlite3.30.1 数据库模块+支持库

    本次更新的版本在开始事务时,增加了一个 事务锁状态 的参数。 拿简单的话来描述就是 开始事务 时如果 设置了 事务锁状态_ 立即 参数,那么这个时候其他线程的连接就不能写操作了,但是可以读操作,但是在提交事务时...

    oracle笔记(韩顺平oracle视频教学整理)

    只读事务是指只允许执行查询的操作,而不允许执行任何其它 dml 操作的事务, 使用只读事务可以确保用户只能取得某时间点的数据。假定机票代售点每天 18 点开始统计今天的销售情况,这时可以使用只读事务。

    nutsdb:用纯Go编写的简单,快速,可嵌入,持久的键值存储。 它支持完全可序列化的事务和许多数据结构,例如列表,集合,排序集合

    只读事务可以读取给定存储桶和给定键的值,或遍历一组键值对。 读写事务可以从数据库读取,更新和删除密钥。 动机 我想要一个用纯Go编写的简单,快速,可嵌入和持久的键/值存储。 并且如果它支持更多的数据结构,...

    sqlite3.30.1 数据库模块+支持库

    本次更新对于支持库来说,接口改动不大,模块版的话是尽量和支持库接口保持一致,所以对于以前的模块接口可能改动就大了。要解决多线程问题,主要是对sqlite3的锁...是否只读。取互斥体。是否自动提交。进度处理。取下

Global site tag (gtag.js) - Google Analytics