【重难点总结】第五章 数据库
文章目录
一、MySQL 对比 Oracle
1.MySQL
优点
- 开源和社区支持
- 轻量级、配置简单、适合中小型应用快速开发和部署
- 足以处理中小型应用的负债,查询速度快、性能好
缺点
- 相较 Oracle,缺少了一些高级功能,如高级分区、高级优化器和数据压缩等
- 锁粒度不如 Oracle
- 没有厂商提供专业的解决方案
2.Oracle
优点
- 锁粒度更精细,在复杂的事务场景中,具备更好的性能
- 有更强大的查询优化器,在复杂的查询场景中,具备更好的性能
- 扩展性更好
- Oracle 提供更高级的企业级功能
缺点
- 成本高,需要付费
- 安装、配置和管理相对复杂,需要专业的数据库管理员
3.适用场景
- MySQL 适合那些需要灵活、易用、成本较低的数据库解决方案的中小型项目和 Web 应用。其开源特性和良好的性能使其在开发社区中广受欢迎
- Oracle 则适合大型企业和关键任务应用,需要强大的事务处理能力、高性能、高可用性和高级功能。尽管成本较高和管理复杂,但其强大的功能和可靠性使其在企业级应用中具有很高的价值。
4.其他
事务隔离级别
- MySQL 默认采用可重复读
- Oracle 默认采用读已提交,不支持读未提交和可重复读,但通过其他机制可实现类似效果
二、事务
1.什么是事务
事务就是指一组数据库操作,并且这些操作要么全部执行成功,要么全部回滚,保证数据库数据的一致性和完整性
事务具有以下四个重要特性:
- 原子性(Atomicity):事务是一个原子操作单位,不可分割。事务中的所有操作要么全部提交成功,要么全部回滚,不存在部分执行的情况
- 一致性(Consistency):在事务开始之前和事务结束之后,事务在执行前后数据库会从一个一致性状态变到另一个一致性状态
- 隔离性(Isolation):多个事务并发执行时,各个事务之间应该相互隔离,互不干扰
- 持久性(Durability):一旦事务提交,它对数据库中数据的改变就是永久性的,即使系统崩溃,数据也不会丢失
2.ACID 如何保证
- 原子性:通过事务日志来保证,在执行事务期间,所有的数据库操作会被记录到事务日志中,如果事务提交成功,则会将日志中记录的操作持久化;如果事务未能成功提交,则会根据事务日志撤销事务中的操作
- 一致性:通过数据库的约束和规则来保证,包括主键、外键、唯一性约束、默认值约束等
- 隔离性: