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>
通过实例说明两种存储引擎的区别.
MySQL 事务1的更多相关文章
- Mysql事务探索及其在Django中的实践(二)
继上一篇<Mysql事务探索及其在Django中的实践(一)>交代完问题的背景和Mysql事务基础后,这一篇主要想介绍一下事务在Django中的使用以及实际应用给我们带来的效率提升. 首先 ...
- MySQL 事务
MySQL 事务主要用于处理操作量大,复杂度高的数据.比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成 ...
- mysql事务和并发控制
谈到事务,首先想到的问题是并发控制.比如两个用户同时操作数据库里面的一张表,一个正在读数据,一个正在删除数据,那么读数据的读出的结果究竟是多少?并发可以提高系统的性能,让多个用户同时操作一份数据,但为 ...
- MySQL事务学习-->隔离级别
MySQL事务学习-->隔离级别 6 事务的隔离级别 设置的目的 在数据库操作中,为了有效保证并发读取数据的正确性,提出的事务隔离级别. 数据库是要被广大客户所共享访问的,那么在数据库操作过程中 ...
- mysql 事务是专门用来管理insert,update,delete语句的,和select语句一点不相干
1.mysql 事务是专门用来管理insert,update,delete语句的,和select语句一点不相干 2.一般来说,事务是必须满足4个条件(ACID): Atomicity(原子性).Con ...
- php mysql事务
这里记录一下php操作mysql事务的一些知识 要知道,MySQL默认的行为是在每条SQL语句执行后执行一个COMMIT语句,从而有效的将每条语句独立为一个事务.但是,在使用事务时,是需要执行多条sq ...
- mysql事务问题
mysql事务: 若mysql 开启事务后START TRANSACTION ,不显示提交commit,则默认自动回滚,而不是默认自动提交.
- MYSQL事务和锁
mysql事务(一)—转载 2012年12月20日 ⁄ Mysql数据库, 技术交流 ⁄ 暂无评论 一. 什么是事务 事务就是一段sql 语句的批处理,但是这个批处理是一个atom(原子) ,不可分割 ...
- MySQL事务内幕与ACID
MySQL的事务实现严格遵循ACID特性,即原子性(atomicity),一致性(consistency),隔离性(isolation),持久性(durability).为了避免一上来就陷入对ACID ...
- 数据库 Mysql事务详解
Mysql事务 mysql的事务默认是自动提交的,也就是你提交一个query,他就直接执行!我们可以通过 禁止自动提交 开启自动提交 //mysql事务 #include <stdio.h> ...
随机推荐
- PHPCMS V9 采集实例
采集目标: 列表: http://www.cnys.com/zixun/list_2_2.html
- jdbc in postgres
try { Class.forName("org.postgresql.Driver").newInstance(); String url = "jdbc:postgr ...
- 提升开发效率的一款mybatis开发神器
文末附有完整案例的代码内容!! 以前在开发的时候,使用mybatis的时候,经常都需要先配置xml映射文件,然后每条sql操作都需要自己进行手动编写,对于一些复杂的sql这么来操作确实有必要,但是如果 ...
- 关于asp.netCore3.0区域和路由配置
在ASP.NET Core 3.0中路由配置和2.0不一样了 一.MVC 服务注册 ASP.NET Core 3.0 添加了用于注册内部的 MVC 方案的新选项Startup.ConfigureSer ...
- (入门SpringBoot)SpringBoot后台验证(八)
后台验证的作用主要是防止postman...等等工具的恶意提交,前后台都判断数据,双保险. .可以在SpringBoot传参数 加上NotNull.... //分组Default,分组的好处就是可重复 ...
- [读书笔记] JavaScript设计模式: 单例模式
单例模式:保证一个类只有一个实例,并提供一个可以访问它的全局访问点. 一种简单.方便的写法就是用一个变量来标识当前类是否已经创建过对象,如果有,则返回已经创建好的对象,否则创建一个新对象,并将其返回. ...
- workflow engine Ruote 安装
今天在安装gem安装Ruote的过程中遇到问题,改用bundle安装: steven@steven-Latitude-D630:/usr$ sudo mkdir bundel [sudo] passw ...
- iOS应用崩溃日志揭秘2
这篇文章还可以在这里找到 英语 场景 4: 吃棒棒糖时闪退! 用户邮件说, “当rage master吃棒棒糖时应用就闪退…” 另一用户说, “我让rage master 吃棒棒糖,没几次应用就闪退了 ...
- mysql----乐观锁总结和实践
悲观锁并不是适用于任何场景,它也有它存在的一些不足,因为悲观锁大多数情况下依靠数据库的锁机制实现,以保证操作最大程度的独占性.如果加锁的时间过长,其他用户长时间无法访问,影响了程序的并发访问性,同时这 ...
- 在容器内执行go编译程序的坑
如果你编译了一个go程序,让后把它放到容器里面.很多时候这个程序都会无法执行,大概的样子是: /tmp # ls pub sub /tmp # ./pub /bin/ash: pub: not fou ...