数据库原理知识点有哪些

技术数据库原理知识点有哪些这篇文章主要介绍“数据库原理知识点有哪些”,在日常操作中,相信很多人在数据库原理知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”数据库原理知识点有哪些”

本文主要介绍“数据库原理的知识点有哪些”。在日常操作中,相信很多人对数据库原理知识点的问题有所怀疑。边肖查阅了各种资料,整理出简单易用的操作方法,希望能帮助大家解答“数据库原理有哪些知识点”的疑惑。接下来,请和边肖一起学习!

1.交易。

(1)定义。

事务是指满足ACID特征的一组操作。事务可以通过提交来提交,也可以通过回滚来回滚。

数据库原理知识点有哪些

(2)特点。

A.原子数

事务被视为最小的不可分割单元,事务的所有操作要么提交成功,要么失败后回滚。回滚可以通过使用回滚日志来实现,该日志记录了事务执行的修改操作,这些修改操作可以在回滚过程中反向执行。

B.一致性

事务执行前后,数据库处于一致状态。在一致状态下,所有事务读取相同的数据。对于关系数据库,要求更新后的数据能够被后续的访问看到,一致性很强。如果能容忍部分或全部后续访问不可用,则为弱一致性* *;如果更新后的数据需要在一段时间后才能访问,这就是最终的一致性。

C.隔离。

一家公司所做的更改在最终提交之前对其他交易是不可见的。

D.坚持

一旦事务被提交,其修改将始终保存在数据库中。即使系统崩溃,事务执行的结果也不会丢失。

2.并发一致性。

(1)更新丢失。

T1和T2两个交易修改相同的数据,T1先修改,T2后修改,T2的修改覆盖T1的修改。下面是一个大家都懂的飞机订票系统的例子:售票处A(交易A)读出某航班的机票余额A,设置A=16售票处b(交易b)读出同一航班的机票余额a,也是16;售票点售票并修改余额警报;A-1 .所以a是15,写一个回数据库;b、售票点也卖票,修改余额AlarrA-1 .所以a是15,写一个回数据库。结果卖出了两张票,数据库里的票余额只减少了1。

(2)不要反复阅读。

T2读取数据,T1修改数据。如果T2再次读取该数据,读取结果与第一次读取不同。具体来说,当前事务已经读取了一次数据,然后再次读取的数据是其他事务成功修改的数据,导致两次读取的数据不匹配。

(3)幻影阅读。

T1读取一定范围内的数据,T2在该范围内插入新数据,T1再次读取该范围内的数据,读取结果与第一次读取结果不同。或者更一般地说,交易。

lang="EN-US">A首先根据条件索引得到N条数据,然后事务B改变了这N条数据之外的M条或者增添了M条符合事务A搜索条件的数据,导致事务A再次搜索发现有N+M条数据了,就产生了幻读。换句话说,当前事务读第一次取到的数据比后来读取到数据条目少。

3、封锁

1)封锁粒度

MySQL 中提供了两种封锁粒度:行级锁以及表级锁。应该尽量只锁定需要修改的那部分数据,而不是所有的资源。锁定的数据量越少,发生锁争用的可能就越小,系统的并发程度就越高。但是加锁需要消耗资源,锁的各种操作(包括获取锁、释放锁、以及检查锁状态)都会增加系统开销。因此封锁粒度越小,系统开销就越大。在选择封锁粒度时,需要在锁开销和并发程度之间做一个权衡。

2)封锁类型

A.读写锁

排它锁简写为 X 锁,又称写锁;共享锁简写为 S 锁,又称读锁。有以下两个规定:一个事务对数据对象 A 加了 X 锁,就可以对 A 进行读取和更新。加锁期间其它事务不能对 A 加任何锁。一个事务对数据对象 A 加了 S 锁,可以对 A 进行读取操作,但是不能进行更新操作。加锁期间其它事务能对 A S 锁,但是不能加 X 锁。

B 意向锁

使用意向锁(Intention Locks)可以更容易地支持多粒度封锁。在存在行级锁和表级锁的情况下,事务 T 想要对表 A X 锁,就需要先检测是否有其它事务对表 A 或者表 A 中的任意一行加了锁,那么就需要对表 A 的每一行都检测一次,这是非常耗时的。意向锁在原来的 X/S 锁之上引入了 IX/ISIX/IS 都是表锁,用来表示一个事务想要在表中的某个数据行上加 X 锁或 S 锁。有以下两个规定:一个事务在获得某个数据行对象的 S 锁之前,必须先获得表的 IS 锁或者更强的锁;一个事务在获得某个数据行对象的 X 锁之前,必须先获得表的 IX 锁。

3)封锁协议

封锁协议分为三级封锁协议和两段锁协议。MySQL InnoDB 存储引擎采用两段锁协议,会根据隔离级别在需要的时候自动加锁,并且所有的锁都是在同一时刻被释放,这被称为隐式锁定。InnoDB 也可以使用特定的语句进行显示锁定:

SELECT ... LOCK In SHARE MODE;SELECT ... FOR UPDATE;

4、隔离级别

为了避免丢失更新、脏读、不可重复读和幻读,在标准SQL规范中,定义了4个事务隔离级别,不同的隔离级别对事务的处理不同。具体如下图:

数据库原理知识点有哪些

5、多版本并发控制

多版本并发控制是MySQLInnoDB存储引擎实现隔离级别的一种具体方式,用于实现提交读和可重复读这两种隔离级别。而未提交读隔离级别总是读取最新的数据行,无需使用 MVCC。可串行化隔离级别需要对所有读取的行都加锁,单纯使用MVCC无法实现。MVCC在大多数情况下代替了行锁。最早的数据库系统,只有读读之间可以并发,读写,写读,写写都要阻塞。引入多版本之后,只有写写之间相互阻塞,其他三种操作都可以并行,这样大幅度提高了InnoDB的并发度。但是,使用MVCC每行记录都需要额外的存储空间,需要做更多的行维护和检查工作。

6、Next-Key Lock

(1)Record Lock

锁定一个记录上的索引,而不是记录本身。如果表没有设置索引,InnoDB 会自动在主键上创建隐藏的聚簇索引,因此 Record Lock 依然可以使用。

(2)Gap Locks

锁定索引之间的间隙,但是不包含索引本身。例如当一个事务执行以下语句,其它事务就不能在 t.c 中插入 15

SELECT c FROM t WHERE c BETWEEN 10 and 20 FOR UPDATE;

(3)Next-Key Lock

它是 Record Lock Gap Lock 的结合,不仅锁定一个记录上的索引,也锁定索引之间的间隙。例如一个索引包含以下值:10, 11, 13, and 20,那么就需要锁定以下区间:

(negative infinity, 10](10, 11](11, 13](13, 20](20, positive infinity)

到此,关于“数据库原理知识点有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/66410.html

(0)

相关推荐

  • isemodelsim仿真步骤(ise如何使用modelsim仿真)

    技术怎么进行ModelSim独立仿真ISE的仿真工程本篇文章为大家展示了怎么进行ModelSim独立仿真ISE的仿真工程,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。详细操作步骤

    攻略 2021年12月22日
  • flask中orm增删改查操作

    技术flask中orm增删改查操作 flask中orm增删改查操作flask中orm增删改查操作
    一、创建表
    # model.py
    import datetime
    from sqlalchemy imp

    礼包 2021年11月7日
  • html中em是什么单位(em值是什么意思)

    技术css3中em指的是什么单位小编给大家分享一下css3中em指的是什么单位,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 在css3中,em是一个相对长度单位,相对于当前

    攻略 2021年12月19日
  • LibraBFT和Bystack BBFT有什么区别?

    技术LibraBFT与比原链Bystack BBFT有什么不同本篇内容主要讲解“LibraBFT与比原链Bystack BBFT有什么不同”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带

    攻略 2021年12月20日
  • 年轻程序员去大公司好还是小公司好

    技术年轻程序员去大公司好还是小公司好 年轻程序员去大公司好还是小公司好程序员去大公司好还是小公司好其实不论是不是程序员,人们都会有这样的疑问,我的观点是各有特点吧。程序员去大公司好还是小公司好其实不论是

    礼包 2021年11月4日
  • 如何进行ASP.NET Web开发框架中的查询

    技术如何进行ASP.NET Web开发框架中的查询本篇文章为大家展示了如何进行ASP.NET Web开发框架中的查询,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Enterpri

    攻略 2021年11月26日