- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我们知道:
A schedule in which transactions are aligned in such a way that one transaction is executed first. When the first transaction completes its cycle then next transaction is executed. Transactions are ordered one after other. This type of schedule is called serial schedule as transactions are executed in a serial manner.
和
This execution does no harm if two transactions are mutually independent and working on different segment of data but in case these two transactions are working on same data, results may vary.
那么发现两个事务是 Serialize Schedule 的好处是什么?如果结果不同,有什么好处?
最佳答案
当事务访问相同的变量但顺序执行(即不同时执行)时,与只有一个事务执行(可能重复)时相比,“结果可能会有所不同”。对于串行事务,我们不知道(非重叠)事务的执行顺序。在重复事务执行开始时,我们所知道的是,自上次执行结束以来,其他事务可能已更改变量重复交易。 (虽然我们一般都知道一些它们是如何被留下的。)
这种“不同的结果”并没有错,因为它们只是反射(reflect)了交易是在不同的时间请求的。
当事务访问相同的变量并同时执行(即不是连续执行)时,那么对于每个事务,“结果可能会有所不同”(从另一种意义上说)与我们通常理解的代码的方式不同。这种正常的理解依赖于一次只执行一个事务。例如,通常如果代码两次读取一个变量而不写入它,那么我们期望得到相同的值。但是,如果另一个事务在读取之间写入它,则不能保证。例如,通常如果代码读取一个变量,那么我们期望得到该变量实际具有的值。但是,如果我们获取它的一些字节,然后另一个事务写入它,然后我们从该新值中获取其余字节,则不能保证这一点。
但如果事务是可序列化的,那么它们可以非串行执行(有重叠),但结果与串行执行(无重叠)相同。当只有一个交易执行时,代码意味着它通常意味着什么。
所以我们必须确保系统的行为就像交易是连续的,否则我们不知道我们的程序做了什么。
可序列化调度是来自多个事务的交错操作,它给出与某些序列化(化)调度相同的结果。 执行可序列化计划不同于仅在一个事务的所有操作之后执行另一个事务的操作的好处是,通过同时从多个事务执行多个操作提高了吞吐量。
附言
您的报价出现在 web page 上那是一团糟。它甚至没有定义“可序列化的时间表”。您的引文之间的文字是
In a multi-transaction environment, serial schedules are considered as benchmark. The execution sequence of instruction in a transaction cannot be changed but two transactions can have their instruction executed in random fashion.
但是第二句应该开始但是在非连续剧的时间表中...。因为在串行计划中,“事务是一个接一个地排序的。”因此,报价单中的“结果可能会有所不同”是在非系列计划中。
但是你没有回复我的评论:
Does "This execution" refer to a serial execution of transactions or to a non-serial execution of transactions? (What came before your second quote?)
关于sql - DBMS 事务和序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27023239/
我正在阅读 Python 文档以真正深入了解 Python 语言,并遇到了 filter 和 map 函数。我以前使用过过滤器,但从未使用过映射,尽管我在 SO 上的各种 Python 问题中都见过这
当我尝试打印 BST 的级别顺序时,这个问题提示了我。 这是一个 Pre-Order Sequence: 4, 1, 2, 3, 5, 6, 7, 8 In_order Sequence : 1, 2
我的代码在 main(序列测试;)的第一行出现错误,指出它是对 sequence::sequence() 的 undefined reference 。我无法更改 main 中的代码。有谁知道我该如何
这可能很简单,但我在通常的 latex 指南中找不到任何相关内容。在这句话中: {\em hello\/} “\/”的目的是什么? 最佳答案 这就是所谓的斜体校正。其目的是确保斜体文本后有适当的间距。
当我从 Postgresql 表中删除所有记录,然后尝试重置序列以在插入时开始一个编号为 1 的新记录时,我得到不同的结果: SELECT setval('tblname_id_seq', (SELE
在版本10.0.3中,MariaDB引入了一种称为序列的存储引擎。 其ad hoc为操作生成整数序列,然后终止。 该序列包含正整数,以降序或升序排列,并使用起始,结束和递增值。 它不允许在多个查询中
如何在 Groovy 中获取给定数字的序列,例如: def number = 169 // need a method in groovy to find the consecutive number
基本上,如果这是 .NET,它看起来像这样: ISomething { string A { get; } int B { get; } } var somethings = new List
说以下代码部分(同一块): A <= 1 A <= 2 变量 A 总是被赋值为 2 吗?还是会出现竞争条件并分配 1 或 2? 我对非阻塞赋值的理解是,由硬件在 future 分配变量 A,因此它可能
在运行 WiX 设置时,我正在寻找操作列表及其顺序。不知何故,官方网站似乎没有提供任何信息。 基本问题是我想正确安排我的自定义操作。通常我需要使用 regsvr32.exe 注册一个 DLL,而这只能
F#初学者在这里 我想创建一个类型,它是具有至少一个元素的另一种具体类型(事件)的序列。任何其他元素都可以在以后随时添加。通常在 C# 中,我会创建一个具有私有(private) List 和公共(p
作为构建过程和不断发展的数据库的一部分,我试图创建一个脚本,该脚本将删除用户的所有表和序列。我不想重新创建用户,因为这将需要比所允许的更多的权限。 我的脚本创建了一个过程来删除表/序列,执行该过程,然
我想恢复两个向量的第一个日期和相同向量的第二个日期之间的日期序列,.... 这是一个例子: dates1 = as.Date(c('2015-10-01', '2015-03-27', '2015-0
这个问题已经有答案了: sql ORDER BY multiple values in specific order? (12 个回答) 已关闭 9 年前。 我有一个 sql 语句,我想要ORDER
我想恢复两个向量的第一个日期和相同向量的第二个日期之间的日期序列,.... 这是一个例子: dates1 = as.Date(c('2015-10-01', '2015-03-27', '2015-0
在用java编写代码时,我需要用“],[”分割字符串。下面是我的代码。 try (BufferedReader reader = new BufferedReader(new InputStreamR
这个问题已经有答案了: Project Euler Question 14 (Collatz Problem) (8 个回答) 已关闭 9 年前。 我正在尝试查找数字的 Collatz 序列。以下
我有一个例程函数process_letter_location(const char& c, string &word)。 在我的 main 中,我声明了一系列字符串变量,如下所示: string s
我需要找到最长的多米诺骨牌链,给定一组 12 个随机挑选的多米诺骨牌。我已经递归地生成了多米诺骨牌的所有可能性(使用 0 到 12 的面值有 91 种可能性)。多米诺骨牌由一 block “砖 blo
我有这个数据结构 Seq,它继承了类 vector 但有一些额外的功能。使用这个数据结构 Seq 我有这个预定义的数据结构: typedef Seq > MxInt2d; 我现在想要一个包含多个 Mx
我是一名优秀的程序员,十分优秀!