MySql数据库事务的4大特性
2016-03-22 13:08
330 查看
这个问题经常会在一些面试题中被问到。总得来说,数据库事务的4大特性可以简称为ACID。
1、原子性(Atomicity)
事务中包含的程序作为数据库的逻辑工作单位,它对数据库中的数据进行操作时,要么全部执行,要么都不执行。
举个例子,你给小A转账500块时。这个时候银行的数据库会将你卡里的金额减500,同时小A卡里的金额增加500。不存在你的钱被扣,小A的钱没加。或者你的钱没扣,小A的钱增加了。
2、一致性(Consistancy)
一个事务执行前和执行后,数据库都必须要处于一致性的状态。
这句话是怎么理解:就是你给小A的卡里转了500块,不管怎么样你卡里的钱和小A卡里的钱的总和是不变的。不会出现你们两的钱相加之和会出现变化的。
3、分离性、独立性(Isolation)
分离性是指在并发的事务是相互隔离的。即一个事务的内部操作及正在操作的数据必须被封锁起来,不会被其他的事务来企图修改。这一点和Java中多线程编程的同步锁很像。
举个例子:假如你给小A打钱过去,同时小B也在给小A打钱。这时候数据库服务器中要么会让你的事务先执行,或者让小B的事务先执行。不存在你两个的打钱动作会同时来修改小A卡里的金额。
4、持久性(Durability)
持久性是指当数据库系统出现故障了,要确保已经提交的事务的更新是不会丢失的。即数据库中的数据的修改是永久性的。就算系统出现了故障,我们也可以使用数据库的备份和恢复来保证数据的修改。
举个例子:当你从卡里面取出500块,在银行的数据库中你的卡里的金额会减少500。就算银行的数据库进行维修,等到再次恢复的时候你的卡里的钱还是减少500的。不存在取了钱,由于数据库的故障你卡里的钱不变这种情况。
1、原子性(Atomicity)
事务中包含的程序作为数据库的逻辑工作单位,它对数据库中的数据进行操作时,要么全部执行,要么都不执行。
举个例子,你给小A转账500块时。这个时候银行的数据库会将你卡里的金额减500,同时小A卡里的金额增加500。不存在你的钱被扣,小A的钱没加。或者你的钱没扣,小A的钱增加了。
2、一致性(Consistancy)
一个事务执行前和执行后,数据库都必须要处于一致性的状态。
这句话是怎么理解:就是你给小A的卡里转了500块,不管怎么样你卡里的钱和小A卡里的钱的总和是不变的。不会出现你们两的钱相加之和会出现变化的。
3、分离性、独立性(Isolation)
分离性是指在并发的事务是相互隔离的。即一个事务的内部操作及正在操作的数据必须被封锁起来,不会被其他的事务来企图修改。这一点和Java中多线程编程的同步锁很像。
举个例子:假如你给小A打钱过去,同时小B也在给小A打钱。这时候数据库服务器中要么会让你的事务先执行,或者让小B的事务先执行。不存在你两个的打钱动作会同时来修改小A卡里的金额。
4、持久性(Durability)
持久性是指当数据库系统出现故障了,要确保已经提交的事务的更新是不会丢失的。即数据库中的数据的修改是永久性的。就算系统出现了故障,我们也可以使用数据库的备份和恢复来保证数据的修改。
举个例子:当你从卡里面取出500块,在银行的数据库中你的卡里的金额会减少500。就算银行的数据库进行维修,等到再次恢复的时候你的卡里的钱还是减少500的。不存在取了钱,由于数据库的故障你卡里的钱不变这种情况。
相关文章推荐
- MySQL排序原理与案例分析
- mysql索引
- MySQL数据类型--字符串类型
- mysql字段类型详解
- MYSQL分区表测试
- MySQL分库分表环境下全局ID生成方案
- InnoDB还是MyISAM 再谈MySQL存储引擎的选择
- Mysql事务使用总结
- mysqldb
- MySQL数据库总结(13)存储过程与函数
- day9mysql操作
- 解决mysql添加任务计划作业时,报‘事件计划已关闭。事件只能在服务器启动并开启事件计划时才能处理。’
- MySQL InnoDB事务的隔离级别
- 高性能Mysql第三版(第六章查询性能优化)
- MySQLMerge存储引擎
- MySQL中授权(grant)和撤销授权(revoke) 【转】
- 关于MySQL随想(一)
- mysql免安装版本配置
- MySQL主从配置
- mysql的yearweek 和 weekofyear函数