• 数据库事务和事件


    事务介绍

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

    事务特性

    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的查询语句。

  • 相关阅读:
    【转】深入浅出单实例SINGLETON设计模式
    【转】bat等大公司常考java多线程面试题
    java递归逆置一个字符串
    求连续数组子序咧的最大和
    小程序new Date()).getMonth()拿到的月份比实际时间少一个月
    小程序云函数查询数据库时result一直为null
    小程序云开发使用where查询遇到的问题
    小程序运行报错: navigateTo:fail page "pages/navigate/navigate" is not found?
    在Thinkphp中使用AJAX实现无刷新分页
    MYSQL优化9大法!
  • 原文地址:https://www.cnblogs.com/feiqiangsheng/p/11520131.html
Copyright © 2020-2023  润新知