数据库概述(3)

news2024/11/29 5:34:44

课程主页:Guoliang Li @ Tsinghua

继续补充DBMS概况:

DBMS概况

存储管理层

缓冲区管理

为了持久保存数据库里面的数据,必定要做持久化技术,也就是会用到磁盘,然而磁盘读取数据的速度是比较慢的,一般是毫秒级,所以就有了内存来配合数据的存储,也就是会做缓冲区管理。

磁盘读取的速度为什么慢?因为数据存储在磁盘的轨道里,轨道上方有一个磁头,可以从圆心移动到任一轨道,当要读取某个轨道的数据时,磁头需要转动到指定轨道,也叫做寻道。寻道的时间影响了数据读取的速度。

内存全称是随机存取存储器(RAM),为了提高读写速度,会在内存中划分出来一块区域即缓冲区也叫内存缓冲池(Buffer),用来缓存那些从磁盘读取的数据页,数据页是指数据库里存储数据的存储单元,类似于书页(一个容器)。当要找某一数据页中的数据时,会首先在缓冲池中寻找,如果找不到(缓存未命中),就会去磁盘里寻找,并把数据页存放到缓冲池中去,也方便了后续的操作;如果找到了(缓存命中)那就直接从内存读取而且当要写入数据时,不会直接写进磁盘里,而是先在缓冲池中寻找有没有对应的数据在缓冲池中进行数据的写入,如果缓冲命中直接修改数据,缓冲若未命中就会从磁盘中读取数据页到缓冲池,之后再更新到磁盘中去即延迟写入技术(异步去修),可以减少磁盘I/O操作的频率(I/O操作指输入输出操作,即硬件设备和内存之间的数据交换过程)即减少直接读取磁盘提高性能。

索引

类似于书籍的目录,用来检索数据,索引可以将检索的速度从O(n)的时间复杂度变成O(logn)甚至O(1),其中n是数据行数。使用B树或B+树结构的索引方法可以让O(n)的复杂度变成O(logn),这是因为数据被组织成了树状结构,这意味着可以通过逐级查找数据,而在理想情况下可以通过哈希算法(哈希函数)直接定位到数据所在的位置即O(1)的复杂度。

事务处理

是一系列对数据的操作,这些操作要么成功执行要么全都失败(比如银行转账,付款方账户和收款方的账户要同时发生变化,可以视为一个原子性变化,保证了数据的一致性)

故障恢复

日志是记录数据库操作历史的数据文件,当出现故障需要恢复时有利于找到问题,而且日志也让随机的数据读写变成追加性且记录是不可更改的。而且:当数据在内存中被修改时,数据库系统通常会将这些修改的记录先追加到内存中的日志缓冲区。然后,这些日志记录会被异步地写入到磁盘上的日志文件中。这个过程是为了确保即使在修改数据后但尚未写入磁盘之前发生系统崩溃(如电脑突然关机),这些更改也不会丢失。也就是说缓冲池和磁盘上都有日志文件,记录数据的更改历史。

讲完这些我们来看一张更为详细一点的图:

下方的“数据库”可以看作磁盘然后上方的“数据库管理系统”可以看作内存,可以看到内存和磁盘中都有索引和日志管理。

图中的元数据是指:

比如图书馆中有Books这么一个表:表里面有这些“元数据”

BookID:整数(用于唯一标识每本书)
Title:字符串(书籍的标题)
Author:字符串(书籍的作者)
ISBN:字符串(国际标准书号)
PublishDate:日期(书籍的出版日期)
Genre:字符串(书籍的类型,如小说、非小说、科技等)
ShelfLocation:字符串(书籍在图书馆的具体位置)

后面我们就对DBMS进行深入讨论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2192061.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

港股大跌敲响警钟

10月3日,港股早间突如其来的下跌一度登上热搜榜,而午后回暖的恒指则一度抹去跌幅持平。截至当日收盘,恒指跌1.47%,报22,113.51点,守住了22000点关口;恒生科技指数跌、跌3.46%,报4978…

好用耐用充电宝品牌有哪些?推荐2024年热门款充电宝

作为一位热衷于探索各种数码产品的测评博主,今天我又来给大家带来满满的干货啦!在这个智能手机不离手的年代,拥有一款好用耐用的充电宝简直就成了出行必备。那么,在众多品牌和型号中,哪些充电宝真正值得我们入手呢&…

机器学习系列篇章0 --- 人工智能机器学习相关概念梳理

说明 人工智能(Artificial Intelligence, AI)是大势所趋,我们正处于一个AI开始大爆发的时代,基于AI的各类工具在科研、生产、生活各方各面给我们带来了巨大的便利和影响(好的以及坏的),有关AI的一切我们不可不察。 我并非计算机这个行当的科…

msvcp140dll丢失是怎回事,对比哪种解决方法更简单有效

1. msvcp140.dll 简介 1.1 定义与作用 msvcp140.dll 是 Microsoft Visual C 2015 Redistributable Package 的一部分,它包含了 C 运行时库的函数和类,这些库是支持 Windows 应用程序运行的关键组件。msvcp140.dll 文件提供了对 C 程序中常用的功能的支…

Jedis多线程环境报错:redis Could not get a resource from the pool 的主要原因及解决办法。

本篇文章主要讲解,Jedis多线程环境报错:redis Could not get a resource from the pool 的主要原因及解决办法。 作者:任聪聪 日期:2024年10月6日01:29:21 报错信息: 报文: redis Could not get a resou…

影刀RPA实战:Excel密码与字典功能指令

1.实战目标 本次主要讲解下影刀RPA操作Excel密码保护和数据列生成字典,在工作中,我们经常会遇到合作公司给我们发的表格,或是电商平台下载订单Excel数据表都带有密码,这在自动化处理过程中,多少带来不变,影…

cnn突破五(公式)

三层网络反向传播公式推导: X【196】-》HI【80】/HO【80】-》YI【10】/YO【10】,期望是d【10】 X,HI之间用w1【196,80】 HO,YI之间用w2【80,10】 k10;j80;i196 (yo[k]-d[k])*ds(yo[k])*ho[j]; (yo[k]-d[k])*ds(yo[…

双十一哪些东西会打折?入手哪些东西是最明智的?这些好物闭眼入

​随着双十一购物狂欢节的脚步越来越近,我们即将迎来一年一度的购物盛宴。在这个充满折扣和优惠的季节,如何巧妙地选购心仪商品,同时避免落入消费陷阱,成为了每个购物者需要思考的问题。为了帮助大家在双十一期间做出明智的购物决…

Sora文本生成视频模型

一、引言 2024年2月16日,OpenAI发布Sora文生视频模型,犹如一石激起千层浪,迅速刷屏爆火于整个AI圈。这是ChatGPT掀起Gen AI热潮时隔一年后,OpenAI再次史诗级的更新。一方面,Sora从文本、图像迈向视频大模型&#xff0…

javaScript基础(8个案例+代码+效果图)

目录 1.js常用的输出语句 案例:js初体验 1.代码 2.效果 2.js命名规则 3.js赋值 var 关键字声明变量 案例:交换两个变量的内容 完整代码 效果 4.js数据类型 布尔类型 整数 浮点数 字符串 空型 未定义型 5. 数据检测 6.算术运算符 7.比较运算符 案例:计算圆周长和面积 1.代码 2.…

SM2无证书及隐式证书公钥机制签名和加密过程详解(五)

在能够解析隐式证书实例的基础上(SM2无证书及隐式证书公钥机制签名和加密过程详解(四)-CSDN博客),这里介绍如何通过隐式证书机制实现签名验签及加密解密。 (5)隐式证书机制签名验签过程 5.1签名过程 输入&#xff1…

Redis SpringBoot项目学习

Redis 是一个高性能的key-value内存数据库。它支持常用的5种数据结构:String字符串、Hash哈希表、List列表、Set集合、Zset有序集合 等数据类型。 Redis它解决了2个问题: 第一个是:性能 通常数据库的读操作,一般都要几十毫秒&…

【AUTOSAR 基础软件】COM模块详解(通信)

文章包含了AUTOSAR基础软件(BSW)中COM模块相关的内容详解。本文从AUTOSAR规范解析,ISOLAR-AB配置以及模块相关代码分析三个维度来帮读者清晰的认识和了解COM这一基础软件模块。文中涉及的ISOLAR-AB配置以及模块相关代码都是依托于ETAS提供的工…

一条广告变现3W+,半个月涨粉30W!简直太香了!

今天给大家分享个变现很猛的赛道, 这个赛道,我一开始关注到的时候,是一两个月前吧, 当时看到的时候,相关的笔记流量很猛, 而且相关的账号,起的号也很多, 我当时是看到那么多人都…

我有一张图,我怎么让midjourney按照这张图继续生成呢?

使用文字生成图片是一种基本的功能,但是还有一种场景,不是从文字生成图片,而是基于已有的一张图片生成另一张图片,这个时候,就需要以图生图的功能了。 以图生图:image to image generator 以图生图技术让我们见识到…

CSP-J/S 复赛算法 并查集-Hash表

文章目录 前言并查集并查集是什么?并查集的应用举几个并查集的例子更加详细的介绍合并两个集合判断元素的关系 并查集在树中的表示方法并查集在树中的表示概念 字符串图示例初始状态合并操作示例最终结构 查找操作和路径压缩示例 并查集的工作原理判断元素是否在同一…

Linux下静态库与动态库制作及分文件编程

Linux下静态库与动态库制作及分文件编程 文章目录 Linux下静态库与动态库制作及分文件编程1.分文件编程1.1优点1.2操作逻辑1.3示例 2.Linux库的概念3.静态库的制作与使用3.1优缺点3.2命名规则3.3制作步骤3.4开始享用 4.动态库的制作与使用4.1优缺点4.2动态库命名规则4.3制作步骤…

Redis:list类型

Redis:list类型 list命令非阻塞LPUSHLRANGELPUSHXRPUSHRPUSHXLPOPRPOPLINDEXLINSERTLLENLREMLTRIMLSET 阻塞BLPOPBRPOP 内部编码ziplistlinkedlistquicklist 几乎每种语言都有顺序表、数组、链表这样的顺序结构,Redis也做出了相应的支持。 如图&#xff…

RAG:检索增强生成技术概览

Why 将大模型应用于实际业务场景时会发现,通用的基础大模型基本无法满足我们的实际业务需求,主要有以下几方面原因: 知识的局限性:大模型对于一些实时性的、非公开的或离线的数据是无法获取到的。幻觉问题:所有的AI模…

【Python游戏开发】贪吃蛇游戏demo拓展

拓展上一项目【Python游戏开发】贪吃蛇 实现穿墙效果 # 检测游戏是否结束 def check_gameover():global finished# 移除蛇头位置超过窗口判断for n in range(len(body) - 1):if(body[n].x snake_head.x and body[n].y snake_head.y):finished True # 状态检测 def ch…