zoukankan      html  css  js  c++  java
  • MySQL——事务

    事务

    使用场景

    处理操作两大,复杂度高的数据

    • 举个例子:在人员管理系统中,你准备删除一个人员,这是你需要删除人员的基本资料、相关的信息(信箱、文章等等)

    满足条件

    1.原子性

    • 一个事务中的所有操作,要么全完成,要么全部完成
    • 事务在执行中发生错误,会被回滚到事物开始前的状态

    2.一致性

    • 事务开始前和开始后,完整性没有被破坏

    3.隔离性

    • 事物隔离分为不同级别
    • 读未提交
    • 读提交
    • 可重复读
    • 串行化

    4.持久性

    • 事务处理结束后,对数据的修改就是永贵的,即便系统故障也不会丢失

    注意事项

    • 在 MySQL 命令行的默认设置下,事务都是自动提交的,即执行 SQL 语句后就会马上执行 COMMIT 操作。
    • 因此要显式地开启一个事务务须使用命令 BEGIN 或 START TRANSACTION,或者执行命令 SET AUTOCOMMIT=0,用来禁止使用当前会话的自动提交。

    事物控制语句

    • BEGIN 或 START TRANSACTION
    • COMMIT等价于COMMIT WORK
    • ROLLBACK等价于ROLLBACK WORK 回滚到结束用户的事务,并撤销正在进行的所有未提交的修改
    • SAVEPOINT identifier,SAVEPOINT允许在食物中创建一个保存点,一个事务可以有多个SAVEPOINT
    • RELEASE SAVEPOINT identifier删除一个事务的保存点,当没有指定的保存点时,执行该语句会抛出一个异常
    • ROLLBACK TO identifier把事务回滚到标记点;
    • SET TRANSACTION 用来设置事物的隔离级别。InnoDB 存储引擎提供事务的隔离级别有READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ 和 SERIALIZABL

    两种主要方法

    方法一

    • BEGIN 开始一个事务
    • ROLLBACK 事务回滚
    • CONNIT 事务确认

    方法二

    • SET AUTOCOMMIT=0 禁止自动提交
    • SET AUTOCOMMIT=1 开启自动提交

    insert into value 与 insert into values的差异在效率上

    • 插入单行时,values比value快
    • 插入多行时,value比values快
  • 相关阅读:
    NOIP前的一些计划
    回文自动机[学习笔记]
    Luogu-3705 [SDOI2017]新生舞会
    01分数规划[学习笔记]
    jvm参数总结
    读懂jstack
    PRODUCER配置加载
    为什么WAIT必须在同步块中
    NIO学习笔记
    dp求最长递增子序列并输出
  • 原文地址:https://www.cnblogs.com/ceiling-/p/14410290.html
Copyright © 2011-2022 走看看