mysql事务讲解

mysql存储引擎

          查看引擎方式:SHOW ENGINES;

          在存储引擎里面不是所有存储引擎都支持事物的,innodb在5.0版本以后是支持事物的,而myisam和memory是不支持事物的。

 mysql事务特性ACID

                原子性:  事务不可分割,要么全部成功要么全部失败,捆绑式执行。

                一致性:  必须保持数据一致,如转账的话一边加一千一边减一千,总金额为

                                两千,(一个数据的一致状态到另一个数据的一致状态)不管怎么操作

                                总数据一定是不会变的。

                隔离性:  一个事务在执行的时候是不能被其他事物干扰的,其他事物要想执行可以加锁


                持久性:  一个事务一但执行就不能被修改,一但提交到数据库数据将被永久修改。

事务创建 : 

        隐式事物 : 比如我们平时执行的insert、update、delete。他都会默认帮我们开启隐式事物的。

        显示事物 : 事务具有明显的开启和结束的标记。但是前提是必须先设置自动提交功能为禁用

        

开启流程:
        自动提交功能关闭
        set autocommit=0;
        开启事物
        start transaction;
        编写SQL语句增删改查......
        成功:commit;提交事物
        失败:rollback;事物回滚

   事务隔离机制:       

        脏读 :针对的是查询,指两个事务同时进行数据操作,读取到的数据不一样。

        不可重复读:指数据读取一次就不能在重复进行读取了,避免两次数据读取的不一致。

        幻读:幻读一般是指添加和删除,表示第一次读取到了数据以后第二次读取到的数据多了

                    一行或者少了一行,这就叫幻读。

     事务隔离级别:

                    脏读       不可重复读       幻读
read uncommitted     √           √               √
read committed       ×           √               √
repeatable read      ×           ×               √
serializable         ×           ×               ×

mysql中默认的是 repeatable read 隔离级别
查看隔离级别命令: select @@tx_isolation;
设置隔离级别命令: set session|global transaction isolation level 隔离级别;

当涉及到数据库操作时,事务和存储引擎是两个重要的概念。 1. 事务事务是一组数据库操作,被视为一个单独的工作单元,要么全部成功执行,要么全部失败回滚。事务的目的是确保数据库的一致性和完整性。 在MySQL中,使用以下语句来管理事务: - BEGIN 或 START TRANSACTION:开始一个事务。 - COMMIT:提交事务,将所有修改永久保存到数据库。 - ROLLBACK:回滚事务,放弃所有未提交的修改。 事务具有ACID属性: - 原子性(Atomicity):事务中的所有操作都要么全部执行成功,要么全部失败回滚。 - 一致性(Consistency):事务执行前后数据库从一个一致性状态转换到另一个一致性状态。 - 隔离性(Isolation):并发执行的事务之间是相互隔离的,每个事务感知不到其他事务的存在。 - 持久性(Durability):一旦事务提交,其结果将永久保存在数据库中,即使发生系统故障也不会丢失。 2. 存储引擎: 存储引擎是数据库管理系统中负责数据存储和检索的组件。MySQL支持多种存储引擎,常见的有InnoDB、MyISAM、Memory等。 不同的存储引擎具有不同的特点和适用场景: - InnoDB:默认的存储引擎,支持事务、行级锁、外键等特性,适用于大部分应用。 - MyISAM:不支持事务和行级锁,但具有较高的插入和查询速度,适用于读写频率较低的应用。 - Memory:将数据存储在内存中,读写速度非常快,但数据在数据库重启后会丢失,适用于缓存或临时数据。 通过在创建表时指定不同的存储引擎,可以根据应用的需求选择合适的存储引擎来优化数据库性能和功能。例如,使用InnoDB存储引擎可以保证事务的一致性和隔离性,而使用MyISAM存储引擎可以获得更好的读写性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值