在银行转账中有这样一个故事,这个故事发生在银行系统还没有完善的时候。张三银行卡里面有1000元,李四没钱了,张三借给李四200元吃饭,于是转给李四200元。可是在付完款的时候转账系统突然断电了,结果张三扣了200块钱剩下800元,而李四还是0元。那张三转的两百块钱去哪里了?被系统吃了?没错,被卡到系统里面去了。后来银行系统接入了事务,操作中途断电将张三转账的200元退回了张三的账户。
MySQl事务中可以放多句sql语句组成一个语句集合,这个语句集合要么全部执行,要么一个语句都不执行。
- 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。
- 事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。
- 事务用来管理 insert,update,delete 语句
事务是必须满足4个条件(ACID)::原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。
-
原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
-
一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。
-
隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。
-
持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。
数据库的笔记也就分享到这里了,我的学习是走大数据路线的,接下来我会分享python的学习笔记,然后是python爬虫,最后到达数据分析(也不知道能不能坚持到数据挖掘)。人工智能可能对于我来说是无缘了,毕竟人家研究生都不一定能研究出来的东西我就不参与了。
打卡第18天,欢迎对大数据感兴趣的朋友一起讨论、交流,请多指教!