MySQL学习——事务

MySQL学习——事务

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

概念

什么是事务

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

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

为何使用事务

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

好比,小明给小红转帐的一个操做,就会涉及到从小明帐户扣钱和给小红帐户充钱的两个操做。只有两个操做都成功执行了整个操做才算成功,这时就能够提交整个事务,能够说状态由转帐前变到了转帐后。不然有任何一个操做执行失败的话整个操做都要算作失败,这时就须要恢复事务,保证两个帐户上的金额和转帐前是同样的,表示恢复到了转帐前的状态。并发

因此事务是为了保证一组操做的完整性而出现的,也是为了保证数据操做的安全。app

基本术语

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

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

提交(commit):值提交事务的操做,事务期间执行的操做所有生效,事务进入一个新的状态。spa

事务的特性

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

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

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

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

使用事务

支持使用事务的引擎

使用 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引擎,而且也支持事务。

未完待续。

相关文章
相关标签/搜索