本人应用的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的更多相关文章

  1. Mysql事务探索及其在Django中的实践(二)

    继上一篇<Mysql事务探索及其在Django中的实践(一)>交代完问题的背景和Mysql事务基础后,这一篇主要想介绍一下事务在Django中的使用以及实际应用给我们带来的效率提升. 首先 ...

  2. MySQL 事务

    MySQL 事务主要用于处理操作量大,复杂度高的数据.比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成 ...

  3. mysql事务和并发控制

    谈到事务,首先想到的问题是并发控制.比如两个用户同时操作数据库里面的一张表,一个正在读数据,一个正在删除数据,那么读数据的读出的结果究竟是多少?并发可以提高系统的性能,让多个用户同时操作一份数据,但为 ...

  4. MySQL事务学习-->隔离级别

    MySQL事务学习-->隔离级别 6 事务的隔离级别 设置的目的 在数据库操作中,为了有效保证并发读取数据的正确性,提出的事务隔离级别. 数据库是要被广大客户所共享访问的,那么在数据库操作过程中 ...

  5. mysql 事务是专门用来管理insert,update,delete语句的,和select语句一点不相干

    1.mysql 事务是专门用来管理insert,update,delete语句的,和select语句一点不相干 2.一般来说,事务是必须满足4个条件(ACID): Atomicity(原子性).Con ...

  6. php mysql事务

    这里记录一下php操作mysql事务的一些知识 要知道,MySQL默认的行为是在每条SQL语句执行后执行一个COMMIT语句,从而有效的将每条语句独立为一个事务.但是,在使用事务时,是需要执行多条sq ...

  7. mysql事务问题

    mysql事务: 若mysql 开启事务后START TRANSACTION ,不显示提交commit,则默认自动回滚,而不是默认自动提交.

  8. MYSQL事务和锁

    mysql事务(一)—转载 2012年12月20日 ⁄ Mysql数据库, 技术交流 ⁄ 暂无评论 一. 什么是事务 事务就是一段sql 语句的批处理,但是这个批处理是一个atom(原子) ,不可分割 ...

  9. MySQL事务内幕与ACID

    MySQL的事务实现严格遵循ACID特性,即原子性(atomicity),一致性(consistency),隔离性(isolation),持久性(durability).为了避免一上来就陷入对ACID ...

  10. 数据库 Mysql事务详解

    Mysql事务 mysql的事务默认是自动提交的,也就是你提交一个query,他就直接执行!我们可以通过 禁止自动提交 开启自动提交 //mysql事务 #include <stdio.h> ...

随机推荐

  1. hadoop(三)HDFS 文件系统

    Hadoop 附带了一个名为 HDFS(Hadoop 分布式文件系统)的分布式文件系统,专门 存储超大数据文件,为整个 Hadoop 生态圈提供了基础的存储服务. 本章内容: 1) HDFS 文件系统 ...

  2. 527. Word Abbreviation

    Given an array of n distinct non-empty strings, you need to generate minimal possible abbreviations ...

  3. hdu3452 无向树去掉最小的边集使任何叶子与根不连通 / 最小割

    思路一下就上来了,叶子向汇点连边,inf保证不会成为割,跑根到汇点最小割即可.注意无向树双向建边.基础题,分分钟1A: #include<iostream> #include<que ...

  4. Python Challenge 第十四关

    14关页面上是两张图,一张是一个卷面包,一张类似条形码的东西.没任何提示,就看源代码,果然,有一行注释: <!-- remember: 100*100 = (100+99+99+98) + (. ...

  5. 关于TP中U方法,在wamp中是绝对路径,在nginx中是相对路径?(坑)

    这个问题已多次遇到,关于tp 框架 使用U 方法跳转, 在Nginx 服务器上可能会遇到路由跳转不过去前面带点(如:./xx) 解决这个问题,可以在tp的入口文件 index.php 里定义个常量 d ...

  6. Educational Codeforces Round 34 A. Hungry Student Problem【枚举】

    A. Hungry Student Problem time limit per test 1 second memory limit per test 256 megabytes input sta ...

  7. NOIP2016模拟赛三 Problem C: 不虚就是要AK

    题目大意 给定一棵带有边权的树, 问你在树上随机选两个点, 它们最短路径上的边权之和为\(4\)的倍数的概率为多少. Solution 树分治. 没什么好讲的. #include <cstdio ...

  8. mysql共享锁与排它锁

    共享锁shared lock(也叫读锁read lock)又称读锁,若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁.这保证了其 ...

  9. Context都没弄明白,还怎么做Android开发?

    Activity mActivity =new Activity() 作为Android开发者,不知道你有没有思考过这个问题,Activity可以new吗?Android的应用程序开发采用JAVA语言 ...

  10. C#是唯一能挑战Java的编程语言?

    几乎所有新近成长的Visual Studio代码开发人员都选择使用C#,而不是VB.NET或C++,这也使得C#已经成长为微软的第一大语言.根据本月的Tiobe编程语言排行榜,C#再次取得了突破性进展 ...