数据库事务与线程并发时的临界区

94 阅读1分钟

数据库的事务管理与线程并发十分相似,我来比较一下。

线程安全并发需要保证的特点:原子性、可见性、有序性。

数据库事务需要保证的特点(ACID):原子性、一致性、隔离性、持久性。

对于线程并发而言:

原子性

一段代码执行 (例如 pay()) 不被干扰

  • 单处理器多线程

    • 线程在运行时可能被中断,切换到另一个线程执行
  • 多处理器多线程

    • 线程根本就是并行执行的

注意,这个原子性是要求不被其他线程所打扰。

但机器自身的突发故障,是不需要保证的。

而数据库事务的原子性,是要保证不被机器的突发故障干扰。