美文网首页
Transaction

Transaction

作者: SkyDavid | 来源:发表于2016-03-19 14:10 被阅读0次

数据库往往要有如下要求

  • Concurrent database access
    Execute sequence of SQL statements so they appear to be running in isolation
    But want to enable concurrency whenever safe to do so
  • Resilience to system failure
    Guarantee all-or-noting execution, regardless of failures

Transaction

为了满足上述要求而存在,是把一些 SQL 语句看做一个单元

  • 看起来事务运行起来互相独立
  • 事务能保证它的影响 all-or-noting

SQL standard:
Transaction begins automatically on first SQL statement
On "commit" transaction ends and new one begins
Current transaction ends on session termination
"Autocommit" turns each statement into transaction

Transaction Property (ACID)

  • Atomicity
  • Consistency
  • Isolation
  • Durability

Durability

只要事务提交,即使在提交后的那一瞬间系统崩溃,也能保证事务的效果留在数据库中
内部实现是用了 Logging

Atomicity

与 Durability 对应,在提交前系统奔溃,保证事务效果没有留在数据库中
内部实现是用 Logging 进行 undo

Consistency

保证事务开始和结束时所有的 constraint 成立

Isolation

要分隔离等级,隔离等级越低,性能越好,但相对的对 consistency 的保证就越低
注意每种隔离等级针对某一事务范围而言

isolation level.jpg
Serializable:

默认是这种
在这种情况下,每个事务执行前都会上锁,结束后释放锁,因此所有事务执行的效果跟按某种(具体哪一种不确定,因为你不知道哪个会上锁)顺序执行的效果一样。
注意只能保证事务的独立而不能保证执行顺序

Serializable 1.jpg Serializable 2.jpg
Read Uncommitted
Read Uncommitted.jpg
Read Committed
Read Committed.jpg
Repeatable Read
Repeatable Read 1.jpg Repeatable Read 2.jpg

Logging

Record UNDO information for every update!

  • Sequential writes to log
  • Minimal info (diff) written to log

The log consists of an ordered list of actions
Log record contains: <XID, location, old data, new data>

Write-ahead Logging (WAL) Commit Protocol
log 会记录每次更新信息,只有 log 存储到磁盘后,才能把数据写入到数据库

相关文章

  • Bitcoin Transaction - Part One

    Transaction是什么? 我们随意看一个最简单的Transaction,看看什么是Transaction。在...

  • Transaction

    https://jeiwan.cc/posts/building-blockchain-in-go-part-4/...

  • transaction

    This transaction requires SMS code confirmation.

  • The transaction

    事务是数据库中的一组工作单元,它具有两个状态:成功或者失败,成功则一组动作全部提交,失败则全部动作被回滚。 事务主...

  • Transaction

    数据库往往要有如下要求 Concurrent database accessExecute sequence of...

  • Transaction

    事务 在实践开发中,控制数据库事务是一件非常重要的工作。将多条语句作为一个整体进行操作的功能,被称为数据库事务。M...

  • Transaction

    事务核心在于原子性,atomicy; 一致性consistency,isolation隔离性强调的是多个客户端间的...

  • 谈谈Transaction——MySQL事务处理分析

    MySQL 事务基础概念/Definition of Transaction 事务(Transaction)是访问...

  • 分布式事务-3

    JTA/JTS Java Transaction API Java事务API(Java Transaction A...

  • spring配置事物四种方式

    第一种手动配置 Transaction transaction = session.beginTransactio...

网友评论

      本文标题:Transaction

      本文链接:https://www.haomeiwen.com/subject/bnehlttx.html