首页 > 数据库技术 > 详细

数据库学习笔记(一)

时间:2019-01-20 17:52:30      阅读:213      评论:0      收藏:0      [点我收藏+]

一、关系数据库

关系数据库,也就是以关系为核心来组织数据的数据库。它的理念是把数据尽可能拆分成多个二维表格,不同的表之间通过某种关系来连接起来。这样的好处有:

  1. 如果数据的某一部分需要变动,只需要变动该数据所处的表就行,而不需要重新设计整个数据库。(前提是最开始就把关系模型设计得足够好。。)
  2. 可以进行复杂的 SQL 查询
  3. 保证事务的一致性

事务的 ACID 特性

关系数据库保证事务满足以下四个特性:

  1. 原子性(Atomicity):整个事务中的所有操作,要么全部完成,要么全部不完成,不存在只有一部分完成的情况。如果事务在执行过程中触发了异常,整个事务都会失败并中止,数据库不会被改变。(因为没有 COMMIT
    • 注意事务失败并不会自动ROLLBACK需要手动检测 SQLEXCEPTION,然后将事务 ROLLBACK 到某个 SAVEPOINT 或者直接 ROLLBACK 整个事务
    • 一句话总结,就是记录 DB 之前的版本,允许回滚
  2. 持久性(Durability):一旦事务成功执行,它所作的更改就会一直存在于数据库中,不会丢失。(实际上持久性有很多的级别,保证数据绝对不丢失的方法并不存在)
  3. 隔离性(Isolation):在并发事务下,各事务相互独立互不干扰。(或者说一个事务所做的修改在最终提交以前,该修改对其他事务不可见)
    • 隔离性是为了避免并发事务的线程安全问题引入的
    • 为了平衡性能与隔离性,定义了以下四个隔离级别(可以说是适当的破坏一致性来提升性能与并行度):
      • Read Uncommitted
      • Read Committed
      • Repeatable Read
      • Serializable(所有的事务操作都必须串行操作,完全隔离)
Isolation level Dirty reads Non-repeatable reads Phantoms(幻读)
Read Uncommitted may occur may occur may occur
Read Committed don‘t occur may occur may occur
Repeatable Read don‘t occur don‘t occur may occur
Serializable don‘t occur don‘t occur don‘t occur
  1. 一致性(Consistency):如果事务是并发多个,其外在表现也必须与串行事务一致。也就是说事务开始和结束之间的中间状态不会被其他事务看到。

AID 是手段,C 是目的。

MySQL 的 innoDB 引擎默认的隔离级别为 Repeatable Read,而 SQL Server、PostgrelSQL、Oracle 都以 Read Committed 为默认隔离级别。隔离级别可手动修改。

参考

数据库学习笔记(一)

原文:https://www.cnblogs.com/kirito-c/p/10295420.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!