欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MySQL学习——事务

程序员文章站 2022-05-22 20:04:06
MySQL学习——事务 摘要:本文主要学习了MySQL数据库的事务操作。 概念 什么是事务 事务是一组逻辑处理单位,可以是执行一条SQL语句,也可以是执行几个SQL语句。 事务用来保证数据由一种存储情况变为另一种情况,组成事务的各个单元要么都执行成功,要么都执行失败。 为什么使用事务 如果只是简单的 ......

mysql学习——事务

摘要:本文主要学习了mysql数据库的事务操作。

概念

什么是事务

事务是一组逻辑处理单位,可以是执行一条sql语句,也可以是执行几个sql语句。

事务用来保证数据由一种存储情况变为另一种情况,组成事务的各个单元要么都执行成功,要么都执行失败。

为什么使用事务

如果只是简单的一条sql语句的执行,那么是不需要事务的,但在一些复杂的情况下,一个操作会涉及到多条sql语句的执行,这种情况下就有必要保证所有的操作全部成功或者全部失败。

比如,小明给小红转账的一个操作,就会涉及到从小明账户扣钱和给小红账户充钱的两个操作。只有两个操作都成功执行了整个操作才算成功,这时就可以提交整个事务,可以说状态由转账前变到了转账后。否则有任何一个操作执行失败的话整个操作都要算做失败,这时就需要恢复事务,保证两个账户上的金额和转账前是一样的,表示恢复到了转账前的状态。

所以事务是为了保证一组操作的完整性而出现的,也是为了保证数据操作的安全。

基本术语

保存点(save point):指在事务执行前,或者事务执行后,数据在数据库里的一个存储情况,有时也会被称为状态。

回退(rollback):指撤销事务的操作,事务执行期间执行的操作都将失效,事务会恢复到上一个状态。

提交(commit):值提交事务的操作,事务期间执行的操作全部生效,事务进入一个新的状态。

事务的特性

原子性:指事务包含的所有操作要么全部成功,要么全部失败回滚。

一致性:指事务必须使数据库从一个一致性状态变换到另一个一致性状态。

隔离性:指当多个用户并发访问数据库并且操作同一张表的时候,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。

持久性:指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,哪怕是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。

使用事务

支持使用事务的引擎

使用 show engines; 命令查看数据库支持的存储引擎,以及存储引擎是否支持事务:

 1 mysql> show engines;
 2 +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
 3 | engine             | support | comment                                                        | transactions | xa   | savepoints |
 4 +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
 5 | federated          | no      | federated mysql storage engine                                 | null         | null | null       |
 6 | mrg_myisam         | yes     | collection of identical myisam tables                          | no           | no   | no         |
 7 | myisam             | yes     | myisam storage engine                                          | no           | no   | no         |
 8 | blackhole          | yes     | /dev/null storage engine (anything you write to it disappears) | no           | no   | no         |
 9 | csv                | yes     | csv storage engine                                             | no           | no   | no         |
10 | memory             | yes     | hash based, stored in memory, useful for temporary tables      | no           | no   | no         |
11 | archive            | yes     | archive storage engine                                         | no           | no   | no         |
12 | innodb             | default | supports transactions, row-level locking, and foreign keys     | yes          | yes  | yes        |
13 | performance_schema | yes     | performance schema                                             | no           | no   | no         |
14 +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
15 9 rows in set (0.00 sec)
16 
17 mysql> 

发现默认的是innodb引擎,并且也支持事务。

未完待续。