MySQL 事务1

本人应用的MySQL的版本为:5.6.22

MySQL5.5以后默认使用InnoDB存储引擎,其中InnoDB和BDB提供事务安全表,其它存储引擎都是非事务安全表.   可以通过engine关键字在创建或修改数据库时指定所使用到引擎。主要存储引擎:MyISAM、InnoDB、MEMORY和MERGE介绍,通过实例主要讲解下MyISAM与InnoDB在事务上应用区别

(一)MyISAM
  
它不支持事务,也不支持外键,尤其是访问速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用基本都可以使用这个引擎来创建表。
每个MyISAM在磁盘上存储成2个文件,其中文件名和表名都相同,但是扩展名分别为:

 

     

(二)InnoDB
  InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比MyISAM的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。

实例一:(1) 创建测试应用的表结构如下,储存引擎选择MySAM

Create Table: CREATE TABLE `t1` (
  `id` int(6) DEFAULT NULL,
  `id2` int(6) DEFAULT NULL,
  `name` varchar(18) NOT NULL DEFAULT 'zhaolf'
) ENGINE=MyISAM DEFAULT CHARSET=utf8

 

(2) 插入测试应用数据  mysql> select * from t1;
+------+------+------+
| id   | id2  | name |
+------+------+------+
|    2 |    1 | dbdh |
|    8 |    8 | 8    |
|    7 |    7 | 7    |
+------+------+------+
3 rows in set (0.00 sec)

(3) 操作

mysql> savepoint t1; 
Query OK, 0 rows affected (0.00 sec)

mysql> insert into t1 values(3,3,3);
Query OK, 1 row affected (0.01 sec)

mysql> select * from t1;
+------+------+------+
| id   | id2  | name |
+------+------+------+
|    2 |    1 | dbdh |
|    8 |    8 | 8    |
|    7 |    7 | 7    |
|    3 |    3 | 3    |
+------+------+------+
4 rows in set (0.00 sec)

mysql> rollback to t1;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> select * from t1;
+------+------+------+
| id   | id2  | name |
+------+------+------+
|    2 |    1 | dbdh |
|    8 |    8 | 8    |
|    7 |    7 | 7    |
|    3 |    3 | 3    |
+------+------+------+


4 rows in set (0.00 sec)

                  // 根据以上得知MySAM没有对事务做支持

               实例二: 表为t1,存储引擎修改为InnoDB

(1) 第一步:修改为不自动提交模式        

  mysql> alter table t1 engine=innodb;
Query OK, 4 rows affected (0.62 sec)
Records: 4  Duplicates: 0  Warnings: 0

mysql> show create table t1\G
*************************** 1. row ***************************
       Table: t1
Create Table: CREATE TABLE `t1` (
  `id` int(6) DEFAULT NULL,
  `id2` int(6) DEFAULT NULL,
  `name` varchar(18) NOT NULL DEFAULT 'zhaolf'
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

mysql>

 (2) 事务操作


mysql> savepoint t1;
Query OK, 0 rows affected (0.00 sec)

mysql> delete from t1 where id =3;
Query OK, 1 row affected (0.00 sec)

mysql> rollback to t1;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from t1;
+------+------+------+
| id   | id2  | name |
+------+------+------+
|    2 |    1 | dbdh |
|    8 |    8 | 8    |
|    7 |    7 | 7    |
+------+------+------+
4 rows in set (0.00 sec)

mysql>

通过实例说明两种存储引擎的区别.

    

posted @ 2016-06-01 12:04  东北大亨  阅读(343)  评论(0编辑  收藏  举报