热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

数据库隔离级别介绍

事物(transaction)是数据库管理系统的执行单位,可以是一个数据库操作(如select操作)或者是一组操作系列。事物的acid属性,即原子性(atomicty)、一致性(consistency)、隔离性(Isolation)、持久性(Durability)。原子性:保证事物中的所有操作全

事物(transaction)是数据库管理系统的执行单位,可以是一个数据库操作(如select操作) 或者是一组操作系列。事物的acid属性,即原子性(atomicty)、一致性(consistency)、隔离性(Isolation)、持久性(Durability)。 原子性 : 保证事物中的所有操作全

事物(transaction)是数据库管理系统的执行单位,可以是一个数据库操作(如select操作) 或者是一组操作系列。事物的acid属性,即原子性(atomicty)、一致性(consistency)、隔离性(Isolation)、持久性(Durability)。

原子性 : 保证事物中的所有操作全部执行或者全部不执行,比如说执行一个事物,要么全部执行完成,要么回滚到执行之前,拿银行转账事物来说吧,要么转账成功,要么转账失败!!成功,两个金额账户发生变化,一个增加,一个减少,失败的话,两个账户金额保持不变,不会出现一个账户多了钱,一个账户少了钱!!!


一致性:保证数据库始终保持数据的一致性 -- 事物操作之前和事物操作之后是一致的。上面银行转账的例子就是,不管事物执行成功与否,两个账户之间的总金额在执行前后是一致的!!


隔离性: 多个事物并发执行的话结果应该与多个事物串行执行一样的。如果每个事物都串行执行的话,效率会非常的低,所有有些操作在保持数据安全一致的情况下可以冰法执行!!!!!比如说:两个不同的事物读取同一批数据,这样完全可以并发执行,为了控制并发执行的效果就有了不同的隔离级别!!


持久性:持久性表示事务执行完成之后,对数据库的影响是持久的,即使数据库因故障而受到破坏,对数据库也应该能够恢复!!!通常实现方式是采用日志。。




事物隔离级别(transaction ioslation levels): 隔离级别就是对事务并发控制的等级。ANSI / ISO SQL将其分为串行化(Serializable)、可重复读(REPEATABLE READ)、读已提交(READ COMMIT)、读未提交(READ UNCOMMITED)四个等级。为了实现隔离级别通常数据库采用锁(LOCK)。一般在编程的时候隔离级别,至于具体采用什么锁则由数据库来设置!!


串行化(Serializable):所有的事务都一个接一个的串行执行,这样可以避免幻读(phantomreads)。对于基于锁来实现并发控制的数据库来说,串行化要求在执行范围查询(如选取年龄在10 到 30之间的用户)的时候,需要获取范围锁(range lock)。如果不是基于锁实现并发控制数据库,则检测到有违反串行化操作的事务时,需要滚回该事物。


可重复读(REPEATBLE):所有被select获取的数据都不能被修改,这样可以避免一个事物前后读取出数据不一致的情况。

推荐阅读
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 并发编程:深入理解设计原理与优化
    本文探讨了并发编程中的关键设计原则,特别是Java内存模型(JMM)的happens-before规则及其对多线程编程的影响。文章详细介绍了DCL双重检查锁定模式的问题及解决方案,并总结了不同处理器和内存模型之间的关系,旨在为程序员提供更深入的理解和最佳实践。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 作者:守望者1028链接:https:www.nowcoder.comdiscuss55353来源:牛客网面试高频题:校招过程中参考过牛客诸位大佬的面经,但是具体哪一块是参考谁的我 ... [详细]
  • 配置Windows操作系统以确保DAW(数字音频工作站)硬件和软件的高效运行可能是一个复杂且令人沮丧的过程。本文提供了一系列专业建议,帮助你优化Windows系统,确保录音和音频处理的流畅性。 ... [详细]
  • TCP长连接设备管理平台:架构与功能概览
    本文介绍了基于TCP长连接的设备管理平台的设计理念、技术选型及主要功能模块。最初,项目旨在实现简单的协议测试,但随着需求扩展,逐步演变为一个完整的前后端分离系统。 ... [详细]
  • 解决MongoDB Compass远程连接问题
    本文记录了在使用阿里云服务器部署MongoDB后,通过MongoDB Compass进行远程连接时遇到的问题及解决方案。详细介绍了从防火墙配置到安全组设置的各个步骤,帮助读者顺利解决问题。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 本文介绍如何在 FireDAC 环境下实现 FDMEMTable 字段的自动获取,为开发人员提供便捷的数据处理方式。 ... [详细]
  • 本文由瀚高PG实验室撰写,详细介绍了如何在PostgreSQL中创建、管理和删除模式。文章涵盖了创建模式的基本命令、public模式的特性、权限设置以及通过角色对象简化操作的方法。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • openGauss每日一练:第6天 - 模式的创建、修改与删除
    本篇笔记记录了openGauss数据库中关于模式(Schema)的创建、修改和删除操作。通过这些操作,用户可以更好地管理和控制数据库对象。实验环境为openGauss 2.0.0,并使用由墨天轮提供的线上环境。 ... [详细]
  • 本文详细介绍了 MySQL 中 LAST_INSERT_ID() 函数的使用方法及其工作原理,包括如何获取最后一个插入记录的自增 ID、多行插入时的行为以及在不同客户端环境下的表现。 ... [详细]
  • 深入解析三大范式与JDBC集成
    本文详细探讨了数据库设计中的三大范式,并结合Java数据库连接(JDBC)技术,讲解如何在实际开发中应用这些概念。通过实例和图表,帮助读者更好地理解范式理论及其在数据操作中的重要性。 ... [详细]
author-avatar
我爱伟华
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有