码迷,mamicode.com
首页 > 数据库 > 详细

MySQL-事务

时间:2019-01-20 15:06:15      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:balance   insert   之间   安全   多个   相互   auto   级别   account   

### 对事物的理解

1.概念:              

      * 如果一个包含多个步骤的业务操作,被事务管理,,那么这些操作要么同时成功,要么同时失败。

        配个图:

              技术分享图片

2. 操作:commit

      1. 开启事务:start transaction;

      2. 回滚:rollback;

      3. 提交:commit;

创建账户表:

-- 创建数据表

CREATE TABLE account ( 

id INT PRIMARY KEY AUTO_INCREMENT, 

NAME VARCHAR(10), 

balance DOUBLE );
 
-- 添加数据

INSERT INTO account (NAME, balance) VALUES (‘张三‘, 1000), (‘李四‘, 1000);

    技术分享图片

4. MySQL数据库中事务默认自动提交

       * 事务提交的两种方式:

              * 自动提交:

                      * MySQL是自动提交

              * 手动提交:

                      * 需要开启事务,再提交

                      * 一条DML(增删改)语句自动提交一次事务

              * 修改事务的默认提交方式

                    * 查看:select @@autocommit; 1 代表自动提交  0 代表手动提交

                    * 修改默认提交方式:set @@autocommit = 0;

                    手动提交不写commit语句,临时会修改数据,但不会持久化数据。

   2. 事务的四大特征(面试)

          1. 原子性:是不可分割的最小操作单位,要么成功,要么失败。

          2. 持久性:当事务提交或回滚后,数据库会持久化保存数据。

          3.隔离性:多个事物之间,相互独立。

          4.一致性:事务操作前后,数据总量不变。

   3.事务的隔离级别:

         * 概念:多个事物之间是隔离的,相互独立的,但是多个事务同时操作同一批数据,则会引发   一些问题,设置不同的隔离级别就可以解决这些问题

        * 存在的问题:

              1. 脏读:一个事物,读取到另一个事物中中没有提交数据。

              2.不可重复度(虚度):在同一个事物中,两次读取的数据不一样。

              3.幻读:一个实务操作(DML)数据表中所有记录,另一个事务添加了一条数据,则第一个事务查询不到自己的修改。

      * 隔离级别:

            1. read uncommitted: 读未提交

                     * 产生问题:脏读,不可重复,幻读         

            2. read committed: 读已提交

                    * 产生问题: 不可重复,幻读 
            3. repeatable read:可重复度(默认)

                    * 产生幻读

            4. serializable:串行化

                    * 可解决所有问题

        注意:隔离级别从小到大安全性会越来越高,但是效率越来越低。

   * 查询隔离级别

        * 数据库查询隔离级别

             select @@tx_isolation

        * 数据库设置隔离级别

             set global transaction isolation level 级别字符串;

MySQL-事务

标签:balance   insert   之间   安全   多个   相互   auto   级别   account   

原文地址:https://www.cnblogs.com/fangyulu/p/10294493.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!