mysql事务与mysql储存引擎

事务概念及存储引擎
1.0 为何要事务?
先来看一个场景,银行转账汇款:
A和B天天打架,现在让B给A转款1000 元
设计如下表
account表
编号(id)用户名(user)金额(cash)
1A3000
2B2000
传统的做法:

mysql> update account set cash = cash -1000 where id =2;  update account set cash =cash +1000 where id=1;

缺陷:
不安全。比如减少A钱的指令执行了,但是增加B钱的指令却没有执行成功。
这个时候,我们就要使用mysql的事物机制。
1.1事务
tracsaction指作为一个不可分割的逻辑单元而被执行的一组sql语句
1.2事务的使用
事务相关语句 DTL

#开启事物  start transaction;  #书写相应的sql语句  #提交  commit;  #或者回滚  rollback;

1.3事务的四种特性:
  1.原子性,是一个不可分割的逻辑单元,一组sql语句,要么都执行,要么都不执行。
  2.隔离性,事务中的执行过程是不可见的。
  3.持久性,事务一旦提交,就不可撤销。
  4.一致性,事务在发生之前和发生之后,数据是一致。(能量守恒)
1.4事务的原理:
     传统方式:
客户端发送sql语句-->数据库
   事务机制
客户端发送sql语句-->事务日志文件把sql语句记录到事务日志文件中(失败则rollback)-->commit-->数据库
上面的例子:A给B转钱用事物的代码:

#开启事物  Start transaction;  #执行的代码  Update account set cash=cash-1000 where id=1;  Update account set cash+1000 where id=2;  #提交  commit  # 语句出错 可以回滚  #rollback

1.5事务在哪些场合下应用:
一般来说,对于安全性要求比较的业务,建议使用事务。
2.0 mysql存储引擎
何为存储引擎?
我们说数据库是组织、存储和管理数据的仓库。那么,数据库存储数据的方式,就是存储引擎。
在mysql中,存储引擎是以插件的形式加载的。Mysql的存储引擎种类繁多,对于我们来说,要熟悉两种存储引擎去,MyISAM和inonoDB。
Myisam不支持事务。
Innodb支持事务。
全文索引在mysql5.5以前版本中,innodb是不支持的,但是5.5以后的版本支持。
mysql默认的存储引擎,
在mysql5.5以前的版本:MyISAM
在mysql5.5以后的版本:innodb
如果我们要自己声明存储引擎:
Create table()engine=myisam default charset utf8

你可能感兴趣的:(mysql事务与mysql储存引擎)