1.外存储器—磁盘
计算机存储设备一般分为两种:内存储器(main memory)和外存储器(external memory)。 内存存取速度快,但容量小,价格昂贵,而且不能长期保存数据(在不通电情况下数据会消失)。
外存储器—磁盘是一种直接存取的存储设备(DASD)。它是以存取时间变化不大为特征的。可以直接存取任何字符组,且容量大、速度较其它外存设备更快。
1.1磁盘的构造
磁盘是一个扁平的圆盘(与电唱机的唱片类似)。盘面上有许多称为磁道的圆圈,数据就记录在这些磁道上。磁盘可以是单片的,也可以是由若干盘片组成的盘组,每一盘片上有两个面。如下图11.3中所示的6片盘组为例,除去最顶端和最底端的外侧面不存储数据之外,一共有10个面可以用来保存信息。
当磁盘驱动器执行读/写功能时。盘片装在一个主轴上,并绕主轴高速旋转,当磁道在读/写头(又叫磁头) 下通过时,就可以进行数据的读 / 写了。
一般磁盘分为固定头盘(磁头固定)和活动头盘。固定头盘的每一个磁道上都有独立的磁头,它是固定不动的,专门负责这一磁道上数据的读/写。
活动头盘 (如上图)的磁头是可移动的。每一个盘面上只有一个磁头(磁头是双向的,因此正反盘面都能读写)。它可以从该面的一个磁道移动到另一个磁道。所有磁头都装在同一个动臂上,因此不同盘面上的所有磁头都是同时移动的(行动整齐划一)。当盘片绕主轴旋转的时候,磁头与旋转的盘片形成一个圆柱体。各个盘面上半径相同的磁道组成了一个圆柱面,我们称为柱面 。因此,柱面的个数也就是盘面上的磁道数。
1.2磁盘的读/写原理和效率
磁盘上数据必须用一个三维地址唯一标示:柱面号、盘面号、块号(磁道上的盘块)。
读/写磁盘上某一指定数据需要下面3个步骤:
(1) 首先移动臂根据柱面号使磁头移动到所需要的柱面上,这一过程被称为定位或查找 。
(2) 如上图11.3中所示的6盘组示意图中,所有磁头都定位到了10个盘面的10条磁道上(磁头都是双向的)。这时根据盘面号来确定指定盘面上的磁道。
(3) 盘面确定以后,盘片开始旋转,将指定块号的磁道段移动至磁头下。
经过上面三个步骤,指定数据的存储位置就被找到。这时就可以开始读/写操作了。
访问某一具体信息,由3部分时间组成:
● 查找时间(seek time) Ts: 完成上述步骤(1)所需要的时间。这部分时间代价最高,最大可达到0.1s左右。
● 等待时间(latency time) Tl: 完成上述步骤(3)所需要的时间。由于盘片绕主轴旋转速度很快,一般为7200转/分(电脑硬盘的性能指标之一, 家用的普通硬盘的转速一般有5400rpm(笔记本)、7200rpm几种)。因此一般旋转一圈大约0.0083s。
● 传输时间(transmission time) Tt: 数据通过系统总线传送到内存的时间,一般传输一个字节(byte)大概0.02us=2*10^(-8)s
磁盘读取数据是以盘块(block)为基本单位的。位于同一盘块中的所有数据都能被一次性全部读取出来。而磁盘IO代价主要花费在查找时间Ts上。因此我们应该尽量将相关信息存放在同一盘块,同一磁道中。或者至少放在同一柱面或相邻柱面上,以求在读/写信息时尽量减少磁头来回移动的次数,避免过多的查找时间Ts。
所以,在大规模数据存储方面,大量数据存储在外存磁盘中,而在外存磁盘中读取/写入块(block)中某数据时,首先需要定位到磁盘中的某块,如何有效地查找磁盘中的数据,需要一种合理高效的外存数据结构,就是下面所要重点阐述的B-tree结构,以及相关的变种结构:B+-tree结构和B*-tree结构。
顺序读取:顺序地读取磁盘上的页。随机读取是指访问的页不是连续的,需要磁盘的磁头不断移动。这里需要注意的是,这里的“顺序”值得是逻辑上的顺序,在物理上不可能保证所有的数据都是顺序地。而为了保证顺序,数据库存储引擎一般都根据区来管理页,例如innodb存储引擎中的1个区是连续的64个页。因此在顺序读取数据库时,可以保证这64个页是连续的,而区与区之间的页,可能是连续的也可能是不连续的。
相关推荐
本资源“算法-理论基础- 索引- 稠密索引(包含源程序)”着重讲解了稠密索引的概念、工作原理以及其在实际应用中的实现。下面将对这一主题进行深入探讨。 首先,我们要理解什么是索引。在数据库或文件系统中,索引...
在这个主题中,我们将深入探讨索引的概念,特别是分块索引的原理和实现,以及源程序在其中的作用。 索引在数据库系统中扮演着关键角色,它是一种数据结构,用于快速定位和访问存储的数据。索引的工作原理类似于书籍...
### MySQL数据库索引设计原理与实践 #### 一、理论基础 ##### 1.1、一个例子 在MySQL中,合理的索引设计对于提高查询效率至关重要。为了更好地理解这一点,我们可以通过一个具体的例子来深入探讨。 假设有一个...
数据库索引原理是数据库系统中的关键技术之一,它对数据检索速度和系统性能有着重大影响。在个人开发过程中,深入理解并应用这些原理至关重要。本文将围绕数据库中的索引概念、聚族索引、主键以及查询优化进行详述。...
MySQL数据库中的索引是提升查询性能的关键工具,它的工作原理和设计细节对于数据库管理员和开发者来说至关重要。让我们深入探讨一下标题和描述中提及的几个关键概念。 首先,我们来看看索引的存储结构。在MySQL中,...
在深入探讨SQL数据库索引原理之前,我们先来理解一下索引的基本概念。索引,类似于书籍中的目录,是数据库中一种特殊的数据结构,用于快速定位数据。它并不存储实际的数据,而是存储了数据行的位置信息,使得数据库...
R树(R-Tree)是一种多维空间数据索引结构,广泛应用于地理信息系统、数据库管理系统等领域,用于高效地处理和查询多维数据。R树在磁盘存储中的应用尤其重要,因为它们能够处理大量数据并优化I/O操作,从而提高查询...
这两种索引有不同的特点和适用场景,例如聚集索引可以更快地进行数据的检索和排序操作,而非聚集索引在进行范围查询时可能需要多次磁盘I/O操作。 索引使用策略及优化是数据库设计中的重要环节。合理的索引可以大幅...
在深入理解Elasticsearch(简称ES)的索引原理前,我们需要先明白基本概念。ES是一种分布式全文搜索引擎,它将数据存储在索引中,这些索引类似于关系型数据库中的数据库,但具备更高的可扩展性和实时性。索引可以...
下面将详细介绍Windows全盘索引服务的工作原理、设置与优化,以及如何利用正则表达式进行高效检索。 首先,Windows全盘索引服务(也称为Windows Search)是系统内置的一项功能,它会在后台自动扫描并建立硬盘上所有...
### MySQL索引原理详解 #### 一、索引的基本概念 **索引**是帮助MySQL高效获取数据的数据结构。在数据库中,索引扮演着极其重要的角色,它能够显著提高数据检索的速度,尤其是在处理大规模数据集时尤为重要。索引...
**Lucene索引结构原理** Lucene是Apache软件基金会的开放源代码全文搜索引擎库,它为Java开发人员提供了强大的文本搜索功能。理解Lucene的索引结构原理对于优化搜索性能和设计高效的搜索应用至关重要。 首先,我们...
Elasticsearch 中的倒序索引是不可变的,意味着一旦写到磁盘就再也不变。这会有很多好处,不需要添加锁。如果你从来不用更新索引,那么你就不用担心多个进程在同一时间改变索引。 使用多个索引可以让倒序索引可以...
### MySQL索引背后的数据结构及算法原理 #### 数据结构及算法基础 索引在数据库中的作用至关重要,它能够显著提高数据检索的速度。正如标题所提到的,“MySQL索引背后的数据结构及算法原理”这一主题是技术面试中...
本文将深入探讨MySQL索引的本质、底层原理以及实战经验。 首先,理解MySQL索引的本质至关重要。索引是一种特殊的数据结构,用于加速数据库的查询过程。当对表中的某个字段创建索引后,数据库系统可以不必全表扫描,...
本文主要讲解的是MySQL中的B树(B-tree)索引算法原理,它是最常见的一种索引类型,适用于大多数情况。B树索引是数据库管理系统实现高效查询的核心技术之一。 B树,全称平衡多路查找树,是一种自平衡的树数据结构,...
MySQL索引原理及慢查询优化是数据库管理中的重要主题,尤其是在高并发、大数据量的互联网环境中,优化查询性能对于系统的整体效能至关重要。MySQL作为广泛使用的开源关系型数据库,其索引机制和查询优化技巧是开发者...
聚簇索引决定了数据行在磁盘上的物理存储顺序,而非聚簇索引则不遵循这种顺序。 1、MySQL的索引: 在MySQL中,不同的存储引擎对索引的实现方式有所不同。例如,MyISAM引擎使用B+Tree结构,其叶子节点存储的是数据行...
在本文中,我们将深入理解MySQL索引的定义、类型、原理以及如何在实践中有效利用它们。 1. **索引定义** 索引是一种数据结构,其目的是帮助MySQL快速获取数据。它使得数据的查找、排序和访问更加高效。在数据库中...
**数据库中的B+树索引原理** B+树(B Plus Tree)是一种高效的数据结构,广泛应用于数据库系统中,主要用于实现快速的索引查询。它优化了传统的二叉搜索树,能够有效地处理大规模数据,尤其是在磁盘存储环境中,极...