前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >10 分钟梳理关系数据库基础知识(二):存储结构

10 分钟梳理关系数据库基础知识(二):存储结构

原创
作者头像
刁寿钧
修改于 2017-06-27 02:33:20
修改于 2017-06-27 02:33:20
2.2K0
举报
文章被收录于专栏:刁寿钧的专栏刁寿钧的专栏

每天10分钟,用去食堂吃饭的时间解决一个知识点。

存储介质

数据库系统涉及的存储介质中,有代表性的有以下几种:

  • 高速缓存(cache) cache最快,也最贵。我们在使用的过程中一般接触不到,但数据库的实现者在设计数据结构和算法时还是会考虑cache的影响的。嗯,写到这里,不由地端起茶杯,抿了一口水。
  • 主存(main memory)
  • 闪存(flash memory) 现在主要是用在SSD上。提升随机读写的性能。
  • 磁盘(disk) 我们一般进行的讨论中,都是默认数据放在磁盘上。而磁盘与主存之间,是以块(block)为单位交换数据的。优化查询,就是要优化块数,即磁盘IO的次数。而进一步细化的话,磁盘的访问时间由三部分组成:寻道时间,旋转时间,传输时间。

磁盘可以通过SATA,SCSI或SAS口连接到计算机,也可以通过网络与磁盘控制器相连,即我们常提到的SAN和NAS。

RAID

RAID的指导思想就是两条:通过冗余提高可靠性,通过并行提高性能。说到这再岔开一句,其实我们在计算机很多领域都会发现,可靠性都是靠冗余来保证的,而冗余又会带来一致性等问题,针对新的问题,不同的思路会得到各自的方案,我觉得抓住这条主线会有助于我们的学习。

回到正题,我直接画一张RAID不同级别的图吧:

也有厂商使用RAID 1+0或者RAID 10这样的说法,和这里不是同一个术语版本,大家不要混淆就可以了。

缓冲区

我们一直在说,数据库要尽量减少磁盘和主存间传输的block的数目。这也是学习数据库的一条主线。那么,很自然的一个想法就是,我保存尽量多的block在主存中,这样访问时再去磁盘上交换的几率不就降低了嘛。而主存中用于存储磁盘块的拷贝的地方,就叫做缓冲区(buffer)。但是主存比磁盘小得多,所以buffer中内容如何管理,是数据库中很重要也很有的内容。

比如buffer快满时如何替换,经典的算法我们很容易就会想到LRU,但InnoDB就在LRU的基础上又加了一个因子,避免全表扫描对替换buffer的影响。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【数据库08】数据库物理存储系统的选型与管理
当前计算机系统会根据访问速度,介质成本,介质可靠性等,搭配多种不同的存储介质,有代表性的可用存储介质包括。
半旧518
2022/11/18
1.2K0
【数据库08】数据库物理存储系统的选型与管理
【精粹】基础 RAID 介绍
简介 RAID是一个我们经常能见到的名词。但却因为很少能在实际环境中体验,所以很难对其原理 能有很清楚的认识和掌握。本文将对RAID技术进行介绍和总结,以期能尽量阐明其概念。 RAID全称为独立磁盘冗余阵列(Rdeundant Array of Independent Disks),基本思想就是把 多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、 容量巨大的硬盘。RAID通常被用在服务器电脑上,使用完全相同的硬盘组成一个逻辑扇区, 因此操作系统只会把它当做一个硬盘。 RAID
小小科
2018/05/03
1.2K0
【精粹】基础 RAID 介绍
【系统架构设计师】计算机组成与体系结构 ⑧ ( 磁盘管理 | “ 磁盘 “ 缓冲区 | “ 磁盘 “ 缓冲区 概念 和 作用 | “ 磁盘 “ 缓冲区 读取数据 / 写出数据 流程 )
磁盘缓冲区 Disk Buffer 位于 磁盘 和 内存 之间的 数据缓冲区 , 其作用是 优化 数据读取 和 数据写入 速度 ;
韩曙亮
2024/07/14
3430
操作系统学习笔记-I/O管理和磁盘调度
控制的复杂性:例如,打印机仅需要一个相对简单的控制接口,而磁盘的控制接口则要复杂得多。
花猪
2022/02/16
1K0
操作系统学习笔记-I/O管理和磁盘调度
操作系统复习——第十二章 大容量存储器结构
一个典型的坏扇区事务处理可能如下: ·操作系统试图访问逻辑块87。 ·控制器计算ECC的值,发现该块是坏的,它将此结果通知操作系统。 ·下次操作系统重启时,可以运行一个特殊程序以告诉SCSI控制器用备用块替代坏块。 ·之后,每当系统试图访问逻辑块87时,这一请求就转换成控制器所替代的扇区的地址。 12.6 交换空间管理 12.7 RAID结构(磁盘冗余阵列) 一个系统拥有了大量磁盘,它就有机会改善数据读写速度(因为磁盘操作可并行进行)。而且,这种设置也使系统有机会改善数据存储的可靠性,因为可在多个磁
种花家的奋斗兔
2020/11/12
1.1K0
软考高级系统架构师-计算机系统基础
本文基于软考高级系统架构师的相关书籍和视频,记录学习过程中的知识点。后续可能还会继续更新后面章节的知识点,感兴趣的可以点个收藏和关注
用户6256742
2024/08/13
1800
软考高级系统架构师-计算机系统基础
关系数据库如何工作
当谈到关系数据库时,我不禁想到缺少了一些东西。它们到处都在使用。有许多不同的数据库:从小而有用的 SQLite 到强大的 Teradata。但是,只有几篇文章解释了数据库的工作原理。你可以自己谷歌“关系数据库是如何工作的”,看看有多少结果。而且,这些文章很短。现在,如果您寻找最新的流行技术(大数据、NoSQL 或 JavaScript),您会发现更深入的文章解释了它们的工作原理。
TimeFriends
2022/06/29
9660
关系数据库如何工作
HA(高可用)系统设计原则
对于遵循高可靠性的系统设计原则的举措有: IT元素 基本上所有的IT元素(网络设备、主机、应用软件)都采用冗余设计; 核心数据库 核心数据库采用RAC设计,实现负载分担与热备份 应用服务器 应用服务器采用HA设计,实现负载分担与热备份 Web服务器 WEB服务器采用硬件负载均衡设计,实现负载分担与热备份 存储系统 存储系统采用RAID0+1设计 --------------------------------------------------------------------
汤高
2018/01/11
2K0
NVM作为主存上对数据库管理系统的影响
implications of non-volatile memory as primary storage for database management systems
yzsDBA
2020/01/19
1.9K0
NVM作为主存上对数据库管理系统的影响
数据库PostrageSQL-可靠性和预写式日志
可靠性是任何严肃的数据库系统的重要属性,PostgreSQL尽一切可能来保证可靠的操作。可靠的操作的一个方面是,被一个提交事务记录的所有数据应该被存储在一个非易失的区域,这样就不会因为失去电力、操作系统失败以及硬件失败(当然,除了非易失区域自身失效之外)等原因导致的数据丢失。 向计算机的永久存储(磁盘驱动器或者等效的设备)成功写入数据通常可以满足这个要求。 实际上,即使计算机受到致命损坏,只要磁盘驱动器幸存下来,那么它们就可以被移动到另外一台具有类似硬件的计算机上, 而所有已经提交的事务将保持原状。
cwl_java
2021/01/13
6810
面试官最爱问:服务器磁盘故障的解决方案
为了解决故障后数据一致性问题,数据需要持久化存储, (如何证明用户写入数据 和存储数据一致性的)
早起的鸟儿有虫吃
2025/04/25
1180
面试官最爱问:服务器磁盘故障的解决方案
精!存储知识,网络工程师必学!
存储就是根据不同的应用环境通过采取合理、 安全、有效的方式将数据保存到某些介质上并能保证有效的访问.
网络技术联盟站
2021/07/02
7550
文件系统
在存储元数据中保存了每个文件的信息,保存文件的属性,跟踪哪一块存储块属于逻辑上文件结构的哪个偏移
用户11097514
2024/05/31
1750
文件系统
谈谈数据库参数设置与InnoDB存储引擎
我们都知道,数据库是用于存取数据的。然而,存取数据会涉及到磁盘I/O的读写操作,这使得I/O读写成为数据库系统的主要性能瓶颈。为了解决这个问题,MySQL数据库采用了许多内存管理技术来优化数据库操作,包括内存优化查询、排序以及写入操作。
架构狂人
2023/08/16
4220
谈谈数据库参数设置与InnoDB存储引擎
【基础知识】Oracle核心进程(PMON、SMON、DBWn、LGWR、CKPT)
本文主要总结的是五个核心后台进程(PMON、SMON、CKPT、DBWn、LGWR),理解这些进程的概念是Oracle学习的内功,是TroubleShooting和优化的基础,以下内容参考了Oracle编程艺术、官方文档Concept、OCP考试指南及行业大牛的总结。不到位的地方,请务必指出。
甚至熊熊
2021/04/22
5.2K0
肝了很久!一文了解操作系统 I/O
我们之前的文章提到了操作系统的三个抽象,它们分别是进程、地址空间和文件,除此之外,操作系统还要控制所有的 I/O 设备。操作系统必须向设备发送命令,捕捉中断并处理错误。它还应该在设备和操作系统的其余部分之间提供一个简单易用的接口。操作系统如何管理 I/O 是我们接下来的重点。
cxuan
2020/06/28
1.2K0
肝了很久!一文了解操作系统 I/O
存储器层次结构介绍
这里先说一下存储器系统: 寄存器 -----> 高速缓存 -----> 主存储 存储器对程序的性能有着巨大的影响,程序的运行就是对数据的不停的计算和搬移,其中最为耗时的就是程序对数据的搬移。因此,存储器对数据的存取速度是至关重要的。 CPU在访问寄存器中的数据只需要一个周期就可以访问到,在高速缓存中需要4-75个周期,如果在主存器上则需要上百个周期,如果在磁盘上则需要几千万个周期。
HeaiKun
2020/07/06
1.4K0
6 mysql底层解析——缓存,Innodb_buffer_pool,包括连接、解析、缓存、引擎、存储等
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
天涯泪小武
2019/09/18
1.5K0
6 mysql底层解析——缓存,Innodb_buffer_pool,包括连接、解析、缓存、引擎、存储等
innodb与ext4缓存交互分析
这里我们使用术语“缓冲”(一般为buffer)来表示对数据写的暂存,使用术语“缓存”(一般为cache)来表示对数据读的暂存。顾名思义,由于底层存储设备和内存之间速率的差异,缓冲是用来暂“缓”对底层存储设备IO的“冲”击。缓存主要是在内存中暂“存”从磁盘读到的数据,以便接下来对这些数据的访问不用再次访问慢速的底层存储设备。
mingjie
2022/05/12
1.3K0
innodb与ext4缓存交互分析
MySQL四:InnoDB的存储结构
「MySQL存储引擎最大的特点就是【插件化】,可以根据自己的需求使用不同的存储引擎,innodb存储引擎支持行级锁以及事务特性,也是多种场合使用较多的存储引擎。」
云扬四海
2022/09/26
9290
推荐阅读
相关推荐
【数据库08】数据库物理存储系统的选型与管理
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档