php交流吧 关注:49贴子:74
  • 1回复贴,共1

mysql事务与mysql储存引擎

只看楼主收藏回复


事务概念及存储引擎
  1.0 为何要事务?
  先来看一个场景,银行转账汇款:
  李彦宏和周鸿祎天天打架,现在让李彦宏给周鸿祎转款1000 元
  设计如下表
  account表
  编号(id)用户名(user)金额(cash)
  1李彦宏3000
  2周鸿祎2000
  传统的做法:
  mysql>
update account set cash = cash -1000 where id =2;
  update
account set cash =cash +1000 where id=1;
  缺陷:
  不安全。比如减少李彦宏钱的指令执行了,但是增加周鸿祎钱的指令却没有执行成功。
  这个时候,我们就要使用mysql的事物机制。
  1.1事务

  1.2事务的使用
  事务相关语句 DTL

  1.3事务的四种特性:
  1.原子性,是一个不可分割的逻辑单元,一组sql语句,要么都执行,要么都不执行。
  2.隔离性,事务中的执行过程是不可见的。
  3.持久性,事务一旦提交,就不可撤销。
  4.一致性,事务在发生之前和发生之后,数据是一致。(能量守恒)
  1.4事务的原理:
  传统方式:

  事务机制:

  上面的例子:李彦宏给周鸿祎转钱用事物的代码:
  #开启事物
  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
本文由www.e-board.com.cn整理。


1楼2013-05-07 15:57回复
    火钳刘明 前排出售瓜子


    2楼2016-03-09 12:07
    回复