中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PostgreSQL如何使用系統OS cache 提升查詢性能

發布時間:2021-12-09 09:53:15 來源:億速云 閱讀:145 作者:柒染 欄目:大數據

今天就跟大家聊聊有關PostgreSQL如何使用系統OS cache 提升查詢性能,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

今天我們就來說說一個PG的擴展 pgfincore 讓這個擴展來為我們更完善相關的服務和緩存狀態的展示,pgfincore是2ndQuadrant 公司,一家專門為的開源插件。

下面其他的先不講,先看這個插件能幫助我們做些什么,在講其他的。

下圖很清楚的顯示了,一個300萬行的表在系統中經歷了2次 count的操作大致使用的時間,按照一般的數據庫系統來說,我第一次查詢和第二次查詢如果查詢語句是一致的,那第二次的速度應該比第一次快,因為我緩存了查詢的語句和結果之間的對應關系(當然這里也有其他的情況,不在展開)。

圖中我們使用pgfincore插件中的一個,將表或索引預裝入到OS 緩存層面的功能,我們再次查詢,發現比第二次的速度還快,僅僅300萬的數據使用82毫秒。這說明我們將表或索引提升至OS的緩存中,對查詢的加速是有效的嗎,即使我們用不上什么索引,或沒有所以的情況下。

PostgreSQL如何使用系統OS cache 提升查詢性能

select * from pgsysconf();

PostgreSQL如何使用系統OS cache 提升查詢性能

通過pgsyusconf() 可以查看當前系統的OS 控制的頁面有多少,剩余多少。在通過這個插件可以很清晰的指導,當然我們缺少不缺少系統OS層面的緩存。(缺不缺 OS 系統緩存的問題我們可以解決了)

當然我們通過

select * from pgfincore('test'); 可以看到一個表的DISK 與OS PAGE 之間的對應的關系,

PostgreSQL如何使用系統OS cache 提升查詢性能

下面做一個實驗來證明,加載和不加載OS 內存的情況下,到底有什么區別,下圖中包含了15次頻繁的對一個表的 select * from 表 limit 10;的操作

PostgreSQL如何使用系統OS cache 提升查詢性能

總體的數據在0.6986秒

我們在加載了OS 系統緩存后,我們在做15次

PostgreSQL如何使用系統OS cache 提升查詢性能

顯示總體30次的查詢事假在0.9625秒,那加載后查詢的15次的時間是

0.9625 - 0.6986 = 0.2639 秒 也就是說大致節省了 3分之二2 強的時間。

另外在前幾期中講了pg_rewarm 插件,可以在系統重啟之后進行類似MYSQL的 將系統重啟動之前的數據灌入到INNODB BUFFER POOL中,但我們忽略了另一個問題,就是MYSQL 以及其他數據庫是沒有OS 緩存利用這么一說的,所以POSTGRESQL 如果你在重啟后還可以考慮對部分數據,怎么快速的緩沖到 OS 的緩沖的事情。實際上在做了幾個測試后,讓我打消了使用pgfadvise_loader的想法,因為提升到速度只在第一次有效,另外如果是生產機有多少機會會經常重啟,如果是測試機,有必要勞心勞力的作這個事情。

當然如果你感興趣可以看一下官方的文檔,關注一下 pgfadvise_loader可以滿足你嫉妒優化的想法。

下面整理了一下相關的一些命令

1 select * from pgsysconf_pretty();

得到你系統的OS層面的緩沖信息

2 select * from pgfadvise_willneed('表名');

加載索引或表到OS CACHE 層面

3 select * from pgfadvise_dontneed('p表名');

卸載表的內容從OS CACHE 層面

看完上述內容,你們對PostgreSQL如何使用系統OS cache 提升查詢性能有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平顶山市| 洪湖市| 长垣县| 陇南市| 连山| 桐乡市| 清苑县| 泽库县| 富顺县| 茂名市| 北京市| 平阴县| 绵竹市| 金塔县| 海原县| 青浦区| 宣武区| 砀山县| 郯城县| 洛南县| 黔西| 阳原县| 马尔康县| 紫阳县| 洪江市| 邹城市| 临朐县| 京山县| 黑河市| 泽州县| 皋兰县| 靖边县| 随州市| 海门市| 祁连县| 旺苍县| 东乌珠穆沁旗| 班玛县| 宝应县| 民勤县| 南皮县|