MySQL数据库优化(二)—MySQL事务
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL数据库优化(二)—MySQL事务,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2245字,纯文字阅读大概需要4分钟。
内容图文
![MySQL数据库优化(二)—MySQL事务](/upload/InfoBanner/zyjiaocheng/539/c45875f1a10d45ef9e928efd7ac257ab.jpg)
Atomicity
原子性 :一个事务被视为一个不可分割的最小工作单元,整个事务要么全执行,要么全部失败回滚。
Consistency
一致性:数据库总是从一个一致性的状态转换到另一个一致性的状态。例如,即使取钱操作失败,因为事务没有提交,所以事务所做的修改也不会保存到数据库中,数据还是事务执行前的状态。如果事务执行成功,那数据就是执行后的状态,保持不变。
Isolation
隔离性:一个事务所做的修改在提交之前,对其他事务是不可见的。
Durability
持久性:一旦事务提交,则其所做的修改会永久的保存到数据库中。
注意
正如锁的粒度升级会增加系统开销一样,事务处理过程也需要数据库系统做更多额外的工作。一个支持ACID的db通常比不需要支持ACID的数据库对CPU的处理能力要求更高、需要更多的内存和磁盘空间。所以用户可以通过不同的应用场景,选择mysql多样的数据库引擎,灵活应变。
二、隔离级别
在SQL标准中定义了4中隔离级别。每一种级别的事务隔离性对应着,该事务所做的修改在事务内部、事务之间的可见性。隔离级别越低,并发性越强,系统开销越低。
Read Uncommitted
未提交读:该隔离级别的事务,在数据修改过程中,即使没有提交,其他事务对于这些数据也是可读的。事务可读到未提交的数据也叫脏读(Dirty Read),由于脏读在实际应用中会导致很多问题,一般这类隔离级别应用很少。
Read Committed
提交读:(一般数据库默认事务级别)只有当前事务执行完,把数据提交之后,其他事务才可对这些数据进行读取。也叫不可重复读,因为其他事务执行2次查询可能前后会得到2个不同结果(事务执行前读一次,执行后读一次)。
Repeatable Read
可重复读:(Mysql的默认隔离级别)解决了脏读的问题,该级别保证了在同一事务中,多次读取的结果是一致的。但仍旧无法解决幻读问题。幻读:事务A在读取一定范围内数据时,事务B有对该范围数据进行插入等更新操作,事务A再次读取该范围记录时,会产生幻读(Phantom Read)。
Serializable
可串行化:在读取每一行数据时,都加上锁,强制事务串行执行,避免幻读问题。但容易产生超时和锁竞争问题。应用也相对较少,只有在特别需要保证数据一致性且无并发的情况下才使用该级别。
三、Mysql设置事务隔离级别
set transaction isolation level read committed;
新的隔离级别会在下一个事务开始执行时生效。如果需要修改当前事务的隔离级别,可对配置文件进行修改。另外, 在上篇博客中对mysql提供的两种支持事务的存储引擎:InnoDB和NDB Cluster有所介绍。
以上就是MySQL数据库优化(二)—MySQL事务 的内容,更多相关内容请关注PHP中文网(www.gxlcms.com)!
内容总结
以上是互联网集市为您收集整理的MySQL数据库优化(二)—MySQL事务全部内容,希望文章能够帮你解决MySQL数据库优化(二)—MySQL事务所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。