事务处理&MySQL存储引擎
事物处理
概念
事务必须服从ISO/IEC所制定的ACID原则。
ACID是原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)的缩写。
- 原子性:一个事物为一个整体,要干就干完。
A transaction’s changes to the state are atomic: either all happen or none happen. These changes include database changes, messages, and actions on transducers. - 一致性:事物失败,数据恢复到事物执行前。
- 隔离性:在事务执行过程中对数据的修改,在事务提交之前对其他事务不可见。多个事物不能同时进行,需要排队。
Even though transactions execute concurrently, it appears to each transaction T, that others executed either before T or after T, but not both. - 持久性:事物执行成功,对数据的更改,在系统中是永久的。不会过几天自动变了。
重要性
方便数据共享以及确保数据的安全性。
比如:A给B通过支付宝转账。那么系统就要确保从A那里扣除了钱之后,要把钱加到B上,这一个事物。
具体样例
以后进行补充
MySQL存储引擎
MyISAM与InnoDB
MyISAM与InnoDB的区别
- InnoDB支持事物,MyISAM不支持。在一些列增删改中只要哪个出错还可以回滚还原,而MyISAM就不可以了。
- 主要是读取写入的用MyISAM效率高,涉及到事物的用InnoDB
- MyISAM是默认引擎,InnoDB需要指定
- InnoDB支持行锁
- 清空整个表时,InnoDB是一行一行的删除,效率非常慢。MyISAM则会重建表
使用InnoDB方法
- 建表时create table XX()ENGINE=InnoDB;使用MyISAM同理
- 在配置文件my.ini中的 [mysqld] 下面加入default-storage-engine=INNODB,重启Mysql服务器;设置MyISAM为默认同理。
登录Mysql数据库,mysql>show engines 如果出现 InnoDB |DEFAULT,则表示设置InnoDB为默认引擎成功。
引擎查看与切换
- 查看表使用的存储引擎
show table status from db_name where name=’table_name’;
第二个就是储存引擎类型,很容易发现。 - 修改表引擎
alter table table_name engine=innodb;
总结:需要事物,那么用InnoDB;不需要就用MyISAM;不知道需不需要就用InnoDB。