磁盘缓存专题之一 缓存命中和缓存未命中&缓存与缓冲间的差异

所属分类: 数据库 / MsSql 阅读数: 1460
收藏 0 赞 0 分享
不论什么时候,只要系统带有多个设备,而这些设备的性能又各不相同,就存在从慢速设备到快速设备不断更换工作地点以改善系统性能的可能性,这就是缓存的基本思想。即数据从一个地点拷贝到另一个地点,使之检索起来更快。虽然这是一个简单概念,但却包含着许多奇思妙想。

简单地说,为满足某种预期的未来需要所做的准备即缓存。缓存是一种人类的本性,为了保证充分的物品供应量,需要预先进行计划,然后选择一个能够提供最快服务的地方,存放它们,这就是所谓的可靠物资管理。它也是计算机系统的核心概念,即将需要的信息放在可以最快访问的地方,其描述如图。
 
缓存的概念可以用于几种设备,这些设备包括:
• 比正常内存更快的高速内存缓存。
• 比磁盘驱动器更快的、由内存芯片组成的磁盘缓存。
• 比通过Internet访问更快的、由磁盘实现的Internet缓存。

本专题主要涉及的是磁盘缓存。通常,用于缓存的内存是易失内存,假如电源切断,存放在缓存中的数据内容将会丢失。从这个意义上说,缓存内存是一个临时存储,但磁盘设备和子系统所使用的缓存是非易失存储。易失(内存)和非易失存储关系如图所示

 

本篇主题如下:

缓存命中和缓存未命中

缓存与缓冲间的差异



缓存命中和缓存未命中

当I / O操作开始从磁盘缓存而不是从非易失存储中检索数据时,(如磁盘设备或子系统)缓存命中发生。除了提供来自内存的快速响应之外,缓存命中还缩短了I / O路径的距离。如图所示。


 

另一种情况是,虽然搜索了缓存,但没有发现数据,因此数据必须从非易失存储读取,这就是缓存未命中。由于搜索缓存时需要花费时间,所以缓存未命中增加了I / O操作的时间。缓存未命中工作过程如图所示:


 

如果缓存实现不理想,将产生很高的未命中率,由于每次缓存未命中都需要花费额外的时间,所以导致系统性能的下降。用于描述缓存相对精确度的术语叫缓存命中率,缓存命中率是缓存命中数除以I / O请求总数所得的结果。对于开放系统服务器,如UNIX、Win NT及NETWare系统等,通常的命中率率不超过50 %。顺便指出,由于大型计算机系统使用的数据访问方法不同,它能到达更高的命中率(90 %)。

缓存命中率的计算如下:

缓存与缓冲间的差异

“缓存”和“内存”有时可以互换使用。然而,磁带驱动器中的内存通常并不是缓存,而是缓冲。虽然它们的物理组成是一样的,但缓冲只起临时存储数据的作用,由此数据从一个位置或设备传到另一个位置或设备。一般地,缓冲是在生命期较短的进程控制下工作,一旦数据传输完毕,这些进程将立即释放内存地址。一种常见类型的缓冲是F I F O缓冲,即一种先进先出结构,其结构如图所示:


 

另一方面,缓存内存由一个或更多的系统算法所控制,这些算法在一个长时间里维护和管理着内存资源,缓存的数据可以长时间地保存在缓存中。

在协调性能有差异的控制器和设备工作方面,缓冲常常能够发挥作用,这种方式的缓冲可以看作是某种转换器。主机I / O控制器上的芯片可以快速地通过I / O路径传输数据,它们的性能可以达到纳秒级,而对于磁盘和磁带驱动器这样一类的机电存储设备,其数据的传输速度只能在微秒范围内。因此,设备制造商把缓冲内存放入设备中,以减少访问延迟,以适合主机控制器的性能。这样,主机控制器可以同时地在多个设备上实施重叠操作,图显示了这种重叠过程。


 
另一方面,缓存利用更复杂的智能技术决定它将存储什么数据。缓冲是由相对简单的内存芯片构成,这些芯片不停地卸出和填充,但是磁盘缓存算法运用复杂的逻辑处理:那些数据应存放在缓存中,那些数据应从缓存中撤出。根据应用的不同,这些缓存的算法变化很大。

缓存算法既可以在主机软件中实现,也可以在存储子系统或在主机控制器中实现。当缓存由一块电子线路实现时,它被称为缓存控制器,除了管理磁盘缓存内存中的内容外,它还可以控制子系统中的磁盘操作,这些操作的细节是下一章的主要论题。图显示了带有一个缓存控制器和缓存内存的磁盘缓存结构:


之前在社区发布了一系列的文章,后来因为图片问题,很多的文章无法看了,朋友都反应了这个问题,现在发布出来,持续的更新,请大家顶起来 :http://www.itpub.net/thread-1703788-1-1.html

按需下载 打包下载 https://www.jb51.net/books/59793.html

作者:小洋,燕洋天

更多精彩内容其他人还在看

浅析SQL Server 聚焦索引对非聚集索引的影响

本篇文章对SQL Server的聚焦索引和非聚集索引进行简单分析,从而总结出聚焦索引对非聚集索引的影响。有兴趣的朋友可以看下
收藏 0 赞 0 分享

浅析SQL Server的聚焦使用索引和查询执行计划

本文通过介绍默认使用索引、强制使用聚集索引、强制使用非聚集索引让我们知道对于检索所有列结果集使用主键的聚集索引是最佳选择。有兴趣的朋友可以看下
收藏 0 赞 0 分享

详解SQL Server中的数据类型

本文主要讲解了SQL中的数据类型以及几个需要注意的地方,简短的内容,深入的理解。有兴趣的朋友可以看下
收藏 0 赞 0 分享

浅析SQL Server的分页方式 ISNULL与COALESCE性能比较

本文上述重点讲述了SQL Server的分页方式,COALESCE和ISNULL函数区别之处,简短的内容,深入的理解。有兴趣的朋友可以看下
收藏 0 赞 0 分享

浅述SQL Server的聚焦强制索引查询条件和Columnstore Index

本文主要讲了强制使用索引条件来进行查询,当对于使用默认创建索引进行查询计划时觉得不是最优解,可以尝试使用强制索引来进行对比找出更好得解决方案。简短的内容,深入的理解.有兴趣的朋友可以看下
收藏 0 赞 0 分享

详解SQL Server的聚焦过滤索引

本文主要讲解了通过过滤索引来提高查询性能,同时也给出了其不同的场景以及其使用优点和明显的缺点。简短的内容,深入的理解,有兴趣的朋友可以看下
收藏 0 赞 0 分享

解析SQL Server聚焦移除(Bookmark Lookup、RID Lookup、Key Lookup)

本文主要讲解索引性能优化,着重对Bookmark Lookup、RID Lookup、Key Lookup三者进行移除的实现进行解析,以此来提高查询性能。希望对大家有所帮助
收藏 0 赞 0 分享

SqlServer 注释符 单行注释与多行注释

这篇文章主要介绍了SqlServer 注释符 单行注释与多行注释,需要的朋友可以参考下
收藏 0 赞 0 分享

SQL设置SQL Server最大连接数及查询语句

今天遇到了关于Sql Server最大连接数(Max Pool Size)的问题,后来通过查找一些资料解决了,所以想着总结下关于SQL Server最大连接数的内容,所以这篇文章主要介绍了SQL设置SQL Server最大连接数与查询语句,有需要的朋友们可以参考借鉴。
收藏 0 赞 0 分享

浅谈SQL Server交叉联接 内部联接

本文主要讲了SQL Server的交叉联接和内部联接,同时也给出了使用需要注意的地方。有需要的朋友可以看下
收藏 0 赞 0 分享
查看更多