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

MySQL 事务1

时间:2016-06-01 13:07:47      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:

本人应用的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>

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

    

MySQL 事务1

标签:

原文地址:http://www.cnblogs.com/northeastTycoon/p/5549165.html

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