首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >10 分钟梳理关系数据库基础知识(二):存储结构

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

原创
作者头像
刁寿钧
修改2017-06-27 10:33:20
2K0
修改2017-06-27 10:33:20
举报

每天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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 存储介质
  • RAID
  • 缓冲区
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档