暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片
PostgreSQL 缓存命中率低?可以这么做.doc
49
14页
17次
2025-04-16
免费下载
PostgreSQL
缓存命中率低?可以这么做

中,在分析数据库性能时,经常需要处理缓存命
中率低的问题。
介绍
盘活动比从内存读取数据慢得多。根据当今设备的性能规格
从内存读取大约需

纳秒,而从物理驱动器读取需要

微秒



访



周期,不到

纳秒。因此,从物理驱动器进行每次读取都会对
能造影响避免使在本,我了解
分析无法缓存并需理驱读取
景。了解么它,要么,要使
工具和扩展。
数据库如何读取数据
据库在直接从硬盘驱动器读取数据时,可以很好地意识到性
题。它们了许的技高性并尽
存数据。让我们看看数据库如何访问数据,以及接下来会发生什么。
读取数据的各种方式
基本的方法是,当数据库需要读取未配置聚集索引的表时,
的表为堆引擎一扫行,地过
然后再做进一步处理。
据存储在所谓的页面中。数据库引擎将数据分块为较小的部
后将分存驱动每个为一面,

大小(尽管这是可配置的)。遗憾的是,于数据库通常不允
化”,会导致一些空间浪费。扫描整个表时,数据库引擎必须读取
数据量,会超过数据的实际大小,这使得整个过程更加缓慢。
我们考虑数据修改时,事情会变得更加复杂。当我们删除一
,数擎必其从删除种情际上
生。更常见的是,数据库只是将行标记为已删除(“已死”),然后在
描表它。,数然需死行我们
死元组时,这可能会进一步降低性能。
意味着随着时间的推移,我们的数据库会变慢。为了辅
这一,我们需要对表进行碎片整理(有时称为 “

)。此
程使读取数据更有式将
以删除死元组并复一些浪费的空间。
于所有这些内细节,数据库引擎有很多方法可以加
一种用多器并描表可以
读取使事得更我们

中时,这通常是可能的。然而,真正改变游戏的是索引。
聚集索引是一种将数据存在

广义二叉)中的结。所
行都性(进行此我以更
行。的是们不取所来根
这样我们可以避免昂贵的读取,并轻松 到所需的记
必了我们配置索引引将。如
,所存在中。了读
(因需要整地行)然允们利
我们个数在索们可
建额,这引将一些实际
后数从辅中读行的
有更多技术可以提高性能(储和他类
索引),但是,它们都专注于一件简单的事情

尽可能少地读取。
读取后会发生什么
驱动器读取数据后,数据库引擎可能存在内存中,
加快操作因此页面存储存中
据数,可。我
以直一部用于驱动的内
使在我们完全处理了数据是如此。
据库缓存只是一个缓存作系缓存
有一个级别

缓存。使我们在数据库缓存中找不到数据,
仍然缓存因此件系从驱读取
或者

缓存中。当数据库要读取一个内存页时,缓存的实际
方式如下
首先查自存。那里据库
要读取它
of 14
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。