zoukankan      html  css  js  c++  java
  • 数据库事务和事件

    事务介绍

    事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!

    事务特性

    1、原子性:事务中的所有操作,要么全部完成,要么全部不完成。
    2、一致性:事务提交前和提交后,数据库的完整性没有被破坏。
    3、隔离性:事务与事务之间是相互隔离的。
    4、持久性:事务一旦被提交了,那么对数据库中的数据,改变是永久性的。

    事务现象

    1、脏读:事务在处理数据的过程中,读取到另一个未提交事务的数据。
    2、不可重复读:事务范围内的多次查询却返回了不同的结果。
    3、幻读:前后多次读取,数据总量不一致,就像产生了幻觉一样。

    隔离级别

    1、serializable:事务的执行,以序列的形式执行,性能较差,安全性贼高。
    2、repeatable:事务执行的过程中,多次读取到数据是一样的。(Mysql默认)
    3、read committed:事务执行过程中,可以读取另一个事务修改,提交后的数据。(Oracle默认)
    4、read uncommitted:事务执行过程中,可以读取到,另一个事务修改,未提交的数据。

    传播行为

    1、PROPAGATION_REQUIRED:如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的。
    2、PROPAGATION_SUPPORTS:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就以非事务执行。
    3、PROPAGATION_MANDATORY:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就抛出异常。
    4、PROPAGATION_REQUIRES_NEW:创建新事务,无论当前存不存在事务,都创建新事务。
    5、PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
    6、PROPAGATION_NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。
    7、PROPAGATION_NESTED:如果当前没有事务,就创建一个新事务,如果当前存在事务,则在嵌套事务内执行。

    事件介绍

    事件调度器可以在指定的时刻,执行特定的任务,从而实现系统的自动化操作,而这些特定的任务就是事件,这些特定的任务通常由一些确定的SQL语句组成。事件可以使一些对数据库,定时性的操作,不再依赖外部程序,而直接使用数据库本身提供的功能。例如:每隔一段时间清理一些数据,或者晚上执行比较耗费CPU的查询语句。

  • 相关阅读:
    Tomcat 容器的安全认证和鉴权
    Tomcat 中的 Session 和 Cookie
    Tomcat 类加载器的实现
    Tomcat 对静态资源的处理
    Tomcat 路由请求的实现 Mapper
    Tomcat 配置文件解析工具 Digester
    Tomcat 容器的设计和实现
    ArrayList 和 LinkedList 源码分析
    Mybatis自定义分布式二级缓存实现与遇到的一些问题解决方案!
    Dubbo序列化多个CopyOnWriteArrayList对象变成同一对象的一个大坑!!
  • 原文地址:https://www.cnblogs.com/feiqiangsheng/p/11520131.html
Copyright © 2011-2022 走看看