精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

告別Redis!如何在PostgreSQL 18實現無緩存架構的平滑落地?

數據庫 Redis
我并不是反對緩存。如果你需要跨請求協調、速率窗口,或者跨服務的扇出扇入操作,緩存或消息總線仍然有其用武之地。我僅在它掩蓋了規(guī)劃器錯誤并增加了方差的地方移除了它。一個誠實的承認:我曾嘗試通過降低 synchronous_commit 來榨取更多性能,但后來撤銷了,因為對于這條路徑來說,寫入語義的風險不值得去冒。

我在生產環(huán)境關掉了 Redis,而且沒有回滾?!?/p>

這句話現在仍讓我心里發(fā)緊,因為緩存就像一條安全帶。但在 PostgreSQL 18 上經過慎重試驗后,p95 降低了,系統變簡單了,值班負擔也減輕了。

風險是真實的:用戶會話、結賬流程、我們的口碑。

收益也是真實的:更少的活動部件,更少的告警短信。

下面是我走過的路徑、我修復的查詢、唯一關鍵的圖,以及幾個起決定作用的小配置。

一、我撥動開關的那一天

我們的熱路徑是一個參數化的產品查詢,并帶有一點個性化。

緩存為我們帶來了命中,但未命中很嘈雜,而且序列化增加了工作量。

我對該路徑進行了端到端的分析,然后嘗試了一個直接的數據庫方案,使用更緊湊的索引和一個預先計算好的投影。

第一次運行很嚇人——然后數據穩(wěn)定下來了。

我讓緩存停用了一個完整的周期,看著圖表平靜下來。

二、Postgres 里到底發(fā)生了什么

沒有玄學,只有兩件落地的事:

1、覆蓋度與選擇性

一個覆蓋索引 + 一個生成列,讓優(yōu)化器只拿我們要的字段,不再碰堆表。

2、預計算形態(tài)

物化視圖(并發(fā)刷新)把原來靠緩存藏起來的昂貴聚合扛了過來。

PostgreSQL 18 用更理智的執(zhí)行計劃 + 可預測的 I/O 完成了其余工作。

三、那個讓 Redis 變得多余的查詢

下面的表結構反映了一條常見的 Feed 或目錄切片:商品、軟刪除、新鮮度、個性化鍵。

重點不是字段名,而是“生成列 + 覆蓋索引”的組合正好匹配返回結果。

-- Schema and plan helpers (run in a maintenance window)
CREATE TABLE catalog_item (
  item_id           BIGSERIAL PRIMARY KEY,
  category_id       BIGINT NOT NULL,
  tenant_id         BIGINT NOT NULL,
  price_cents       INTEGER NOT NULL,
  rating_avg        NUMERIC(3,2) NOT NULL DEFAULT 0.0,
  tags              TEXT[] NOT NULL DEFAULT '{}',
  updated_at        TIMESTAMPTZ NOT NULL DEFAULT now(),
  deleted           BOOLEAN NOT NULL DEFAULT FALSE
);


-- Generated column to precompute a simple personalization bucket
ALTER TABLE catalog_item
  ADD COLUMN p_bucket SMALLINT GENERATED ALWAYS AS (
    (rating_avg * 10)::smallint
  ) STORED;


-- Covering index that matches the query (note the INCLUDE list)
CREATE INDEX CONCURRENTLY idx_catalog_lookup
  ON catalog_item (tenant_id, category_id, p_bucket, deleted)
  WHERE deleted = FALSE
  INCLUDE (item_id, price_cents, rating_avg, updated_at, tags);


-- A precomputed projection for “trending” that used to be cached
CREATE MATERIALIZED VIEW mv_trending AS
SELECT tenant_id, category_id,
       item_id, price_cents, rating_avg, tags,
       row_number() OVER (PARTITION BY tenant_id, category_id ORDER BY rating_avg DESC, updated_at DESC) AS rk
FROM catalog_item
WHERE deleted = FALSE;


-- Keep it fresh without blocking writers
CREATE UNIQUE INDEX CONCURRENTLY mv_trending_pk
  ON mv_trending (tenant_id, category_id, item_id);


-- In a job runner or cron:
-- REFRESH MATERIALIZED VIEW CONCURRENTLY mv_trending;

應用程序調用隨后變成了單次往返:

-- Serve top N without touching Redis
PREPARE fetch_slice (bigint, bigint, smallint, int) AS
SELECT item_id, price_cents, rating_avg, tags
FROM   catalog_item
WHERE  tenant_id = $1
  AND  category_id = $2
  AND  p_bucket >= $3
  AND  deleted = FALSE
ORDER  BY rating_avg DESC, updated_at DESC
LIMIT  $4;


-- When trending is requested
PREPARE fetch_trending (bigint, bigint, int) AS
SELECT item_id, price_cents, rating_avg, tags
FROM   mv_trending
WHERE  tenant_id = $1 AND category_id = $2 AND rk <= $3;

簡而言之:規(guī)劃器停留在索引上,堆保持"冷卻",視圖從熱路徑中移除了沉重的聚合操作。

四、從源頭削減延遲

兩個小的配置調整起到了作用。它們并非萬能藥;但它們確實讓 I/O 保持穩(wěn)定,并讓規(guī)劃器能夠可靠地利用索引和并行性。

# postgresql.conf (16 GB VM example)
shared_buffers = '4GB'
effective_cache_size = '11GB'
work_mem = '64MB'
maintenance_work_mem = '1GB'
track_io_timing = on
jit = on
max_worker_processes = 8
max_parallel_workers_per_gather = 2
random_page_cost = 1.1
default_statistics_target = 500

如果你在更快的本地 NVMe 上運行,較低的 random_page_cost 能保持索引掃描的吸引力。track_io_timing 會在你對自己磁盤性能判斷有誤時告訴你。

五、我是如何測量的

我運行了一個簡單的客戶端,它發(fā)出了我們通常緩存的那組參數。下表來自我的環(huán)境,3 次預熱運行,顯示的是中位數。網絡跳數和序列化開銷比人們預期的要多。

+--------------------------------------+-------+-------+-------+-------------------------------+
| Path                                 |  p50  |  p95  |  p99  | Notes                         |
+--------------------------------------+-------+-------+-------+-------------------------------+
| Redis (hit)                          |  6 ms |  18 ms|  28 ms| fast but extra hop            |
| Redis (miss → DB)                    | 24 ms |  80 ms| 120 ms| hop + serialization + origin  |
| Postgres 18 direct (covering index)  | 18 ms |  55 ms|  95 ms| fewer hops, stable tail       |
| Postgres 18 via mv_trending (warm)   | 12 ms |  38 ms|  70 ms| precomputed hot slice         |
+--------------------------------------+-------+-------+-------+-------------------------------+

在我們的信息流端點上,直接的數據庫路徑擊敗了緩存未命名的尾部延遲,并消除了命中與未命中之間的斷崖式差距。那個差距過去常常出現在用戶追蹤記錄和支持工單中。

六、前后對比,用 ASCII 圖繪制

一個說服團隊的流程圖:

BEFORE
┌────────┐    ┌──────────────┐    ┌───────────┐
│ Client │───?│ Redis/Codec  │───?│ Postgres  │
└────────┘    └──────────────┘    └───────────┘
    ▲              │                  ▲
    └──── misses ──┘                  └── invalidates ─┘
AFTER
┌────────┐    ┌──────────────────────────────────────────┐
│ Client │─────?│              Postgres 18                │
└────────┘    │  ? Covering index (tenant, category, p)  │
              │  ? Materialized view for trending        │
              │  ? Parallel plan where it helps          │
              └──────────────────────────────────────────┘

我們仍然保留了一個只讀副本以確保安全,但熱路徑現在只有一個依賴項。

七、何時緩存仍然占優(yōu)

我并不是反對緩存。如果你需要跨請求協調、速率窗口,或者跨服務的扇出扇入操作,緩存或消息總線仍然有其用武之地。我僅在它掩蓋了規(guī)劃器錯誤并增加了方差的地方移除了它。一個誠實的承認:我曾嘗試通過降低 synchronous_commit 來榨取更多性能,但后來撤銷了,因為對于這條路徑來說,寫入語義的風險不值得去冒。

八、我保留的可直接復用的更改

這些是實驗結束后保留的兩個應用層面的部分。

1、應用查詢形態(tài)(SQL 預處理語句),而非 ORM 猜測

參數順序穩(wěn)定的預處理語句使得執(zhí)行計劃穩(wěn)定且解析快速。它們也明確了需要索引什么。前面的代碼塊展示了 fetch_slice 和 fetch_trending;那就是實際部署的代碼。

2、適度、常規(guī)的刷新節(jié)奏

刷新 mv_trending 的作業(yè)每隔幾分鐘運行一次,使用 CONCURRENTLY 以保持讀取端的順暢。沒有復雜的 cron 技巧,沒有失效風暴。

九、這對你的團隊意味著什么

如果你的緩存只是為了掩蓋源站慢讀,請先嘗試修好源站。

把查詢蓋全,只預計算真正昂貴的部分。

度量 p95,別看平均。

如果直接走數據庫能打敗緩存未命中的長尾,還能減少運維痛苦,就讓更簡單的架構贏。

作者丨The Atomic Architect    編譯丨Rio

來源丨網址:https://medium.com/@the_atomic_architect/postgresql-18-killed-my-cache-layer-and-i-am-not-bringing-it-back-764496b2a9a5

責任編輯:武曉燕 來源: dbaplus社群
相關推薦

2019-08-14 15:08:51

緩存存儲數據

2019-11-11 15:33:34

高并發(fā)緩存數據

2024-09-20 21:09:42

2015-09-01 13:58:25

大數據企業(yè)

2014-06-06 09:52:42

大數據

2023-03-28 07:59:57

ReactReconciler

2022-09-20 14:46:17

PostgreSQL存儲工具

2023-07-14 13:34:34

StableDiffusion模型

2017-06-13 10:15:50

人工智能深度學習神經網絡

2017-04-24 11:40:26

大數據制造企業(yè)

2020-12-21 09:57:33

無鎖緩存并發(fā)緩存

2024-01-17 09:10:19

2019-10-21 13:28:38

UbuntuPostgreSQL命令

2020-06-14 09:04:00

前端云計算無服務器

2013-04-02 13:04:07

ListView平滑滾

2024-04-03 09:46:03

無服務架構Web

2016-08-29 21:36:55

nginxWeb緩存

2023-02-10 21:12:41

GPUmacOSStable

2021-01-30 17:57:23

Python緩存開發(fā)

2024-12-03 14:38:07

CaffeineRedis二級緩存
點贊
收藏

51CTO技術棧公眾號

国产中文在线观看| 国产午夜小视频| 成人精品国产| 亚洲三级免费观看| 九色一区二区| 中文字字幕在线观看| 欧美日本精品| 亚洲欧美在线一区二区| 国产乱女淫av麻豆国产| 天天干在线视频论坛| 久久亚洲欧美国产精品乐播| 国产精品中文字幕在线观看| 在线免费日韩av| 久久99国产成人小视频| 日韩免费一区二区| 国产免费999| 欧美韩日亚洲| 国产精品青草综合久久久久99| **亚洲第一综合导航网站| 国产91精品一区| 欧美另类综合| 中文字幕亚洲一区| 国产毛片毛片毛片毛片毛片毛片| 亚洲欧洲专区| 欧美在线观看视频一区二区 | xfplay5566色资源网站| 国产成人免费9x9x人网站视频 | 免费观看亚洲视频| 国产精品ⅴa有声小说| 成人丝袜视频网| 国产日产久久高清欧美一区| 久久久午夜影院| 在线中文一区| 视频直播国产精品| 少妇久久久久久久久久| 久草精品视频| 精品久久久久香蕉网| 天天综合网日韩| 韩国三级一区| 色呦呦网站一区| 日本中文字幕网址| 国精产品一区一区三区mba下载| 成人免费在线观看入口| 日韩精品久久久| 日漫免费在线观看网站| 成人99免费视频| 国产精品国产三级国产专区53 | 中文字幕成人在线| 国产中年熟女高潮大集合| 久本草在线中文字幕亚洲| 精品久久久久久亚洲综合网| 国产三级生活片| 小说区图片区亚洲| 欧美日韩国产另类不卡| 中文字幕 91| 免费视频观看成人| 欧美区视频在线观看| 欧美女同在线观看| 台湾天天综合人成在线| 欧美精品第一页| 小早川怜子一区二区三区| 激情欧美一区二区三区黑长吊| 欧美亚洲图片小说| 亚洲精品20p| 国产成人免费视频网站视频社区 | 92裸体在线视频网站| 91 中文字幕| 国产一区二区影院| av免费观看久久| 内射后入在线观看一区| 99久久久无码国产精品| 久久久久久高清| 国产高清视频免费最新在线| 中文字幕av资源一区| 亚洲第一精品区| 欧美xxxx做受欧美88bbw| 亚洲国产精品尤物yw在线观看| 日本www在线视频| 在线成人视屏| 欧美成人video| 在线观看国产免费视频| 欧美一区电影| 久久综合伊人77777蜜臀| 久久久久久久久久综合| 香蕉亚洲视频| 成人午夜小视频| 亚洲国产综合一区| 久久综合色一综合色88| 亚洲一区二区在线看| 日韩av激情| 色婷婷久久综合| 国内自拍第二页| 牛牛视频精品一区二区不卡| 国产一区二区三区在线观看视频 | 国产精品成人一区二区三区电影毛片| av中文一区| 欧美激情2020午夜免费观看| 国产精品男女视频| 久久99久久精品| 激情视频一区二区| 免费黄色在线| 欧美性猛交xxxx免费看| 欧美日韩理论片| 亚洲伊人春色| 欧美极品少妇xxxxⅹ裸体艺术| 男人天堂av在线播放| 国产真实乱子伦精品视频| 久久国产精品久久| www在线视频| 91官网在线免费观看| 久久国产免费视频| 色综合天天爱| 日本精品性网站在线观看| 国产喷水吹潮视频www| 久久久久国产成人精品亚洲午夜| 男人j进女人j| 丁香婷婷久久| 亚洲欧美国产va在线影院| 强乱中文字幕av一区乱码| 日韩av午夜在线观看| 精品国产乱码久久久久软件| 国产在线高清视频| 在线观看成人小视频| 制服丝袜第一页在线观看| 91九色精品| 国产精品激情自拍| 日本aaa在线观看| 亚洲香蕉伊在人在线观| 老司机久久精品| 大胆日韩av| 国产不卡av在线| 亚洲三级黄色片| 一区二区三区在线免费视频| 亚洲精品性视频| japanese国产精品| 国产成人精品综合| 欧美xxx.com| 欧美小视频在线观看| 苍井空张开腿实干12次| 天天天综合网| 国产欧美一区二区三区四区| 免费成人av电影| 欧美日韩亚洲一区二区| 中国极品少妇videossexhd| 午夜欧美精品久久久久久久| 国产原创欧美精品| 欧美性videos| 9191国产精品| 九九精品视频免费| 国产在线日韩欧美| 免费看污污视频| 精品久久亚洲| 九色成人免费视频| www.成人在线观看| 亚洲综合色区另类av| 免费黄色av网址| 在线播放亚洲| 久久久久久久久久久久久久久久av| av男人的天堂在线观看| 亚洲精品国产精品国自产观看浪潮| 五月天婷婷丁香| 久久免费的精品国产v∧| 久久久久久久久久久久久国产精品 | 久久99精品久久只有精品| 免费日韩av电影| 亚洲第一会所| 久久久精品免费视频| 国产激情视频在线播放| 亚洲一区二区三区影院| 四虎成人在线播放| 最新日韩在线| 日本欧美精品久久久| 免费一级欧美在线观看视频| 美乳少妇欧美精品| 蜜臀av午夜精品| 日韩欧美中文免费| 精品国产大片大片大片| 国产精品亚洲视频| 欧美在线观看www| 日韩在线观看| 国产a一区二区| 涩涩涩在线视频| 久久国内精品一国内精品| 国产成人精品无码高潮| 欧美色视频日本版| 日本裸体美女视频| thepron国产精品| 成人性生生活性生交12| 欧美99在线视频观看| 久久久人人爽| 国产精一区二区| 91av在线视频观看| 麻豆视频网站在线观看| 亚洲国产成人精品一区二区| 亚洲在线免费观看视频| 亚洲高清视频的网址| 精品一区二区三区蜜桃在线| 国产成人一级电影| 少妇性l交大片| 欧美日韩一视频区二区| 蜜桃网站成人| 中文字幕一区图| 国产精品永久在线| 亚洲私拍视频| 欧美日韩第一页| 成人在线免费视频| 亚洲国产精品va在线| 亚洲最大成人在线视频| 欧美日韩人人澡狠狠躁视频| 日韩女优一区二区| 国产日韩精品视频一区| 精品熟女一区二区三区| 国内精品久久久久影院色 | 精品无码免费视频| 国产精品免费观看视频| 伊人网伊人影院| 国产 日韩 欧美大片| 五月天av在线播放| 久久一二三四| 久久精品国产精品亚洲色婷婷| 综合视频在线| 在线国产精品网| 国产成人精品一区二区免费看京| av日韩免费电影| 免费一级欧美片在线观看网站| 国产91亚洲精品| 超碰资源在线| 久久久久久久久久久网站| 黄色成年人视频在线观看| 一本色道久久88精品综合| 天天干天天色天天| 欧美va日韩va| 亚洲经典一区二区| 日韩欧美视频一区| h狠狠躁死你h高h| 69久久夜色精品国产69蝌蚪网| 欧美一级做a爰片免费视频| 狠狠色香婷婷久久亚洲精品| 日本熟妇毛耸耸xxxxxx| 一区二区三区中文在线观看| 国产精品丝袜一区二区| 国产精品第13页| 911国产在线| 成人免费在线播放视频| 免费在线观看a级片| 国产精品天干天干在线综合| 欧美性受xxxx黑人| 欧美高清在线精品一区| 极品蜜桃臀肥臀-x88av| 国产嫩草影院久久久久| 少妇av片在线观看| 国产精品久久夜| 可以免费看av的网址| 亚洲欧美激情在线| 老妇女50岁三级| 亚洲曰韩产成在线| 日产精品久久久久久久| 黑人与娇小精品av专区| 无码人妻丰满熟妇区五十路| 欧美在线啊v一区| 国产永久免费视频| 欧美一区二区观看视频| 刘亦菲久久免费一区二区| 亚洲国产古装精品网站| 视频午夜在线| 中文字幕日韩在线播放| 欧美天天影院| 久久久久久久久网站| 亚洲少妇视频| 国产美女精品视频| 爱爱精品视频| 欧美激情专区| 欧美残忍xxxx极端| 久久这里只有精品8| 先锋影音久久久| 五月婷婷六月丁香激情| 国产高清不卡一区| 美国黄色一级毛片| 国产精品视频一二三| 澳门黄色一级片| 福利视频一区二区| 伊人网视频在线| 日韩精品一区二区三区四区| av女名字大全列表| 色吧影院999| 丁香花在线影院| 国产精品极品尤物在线观看| 国产午夜亚洲精品一级在线| 国产一区二区自拍| 日韩不卡一区| 人妻av中文系列| 久久精品国产77777蜜臀| jjzz黄色片| 中国av一区二区三区| 免费观看一级视频| 欧洲生活片亚洲生活在线观看| 国产免费一区二区三区免费视频| 亚洲国产精品热久久| 中文字幕在线视频区| 国内外成人免费激情在线视频网站| 欧美电影h版| http;//www.99re视频| 国产精品嫩模av在线| 日韩成人三级视频| 美国一区二区三区在线播放| av在线播放网址| 亚洲视频中文字幕| www.五月婷婷.com| 亚洲精品电影在线| 成人午夜在线影视| 国产精品中文在线| 制服丝袜日韩| 男人天堂手机在线视频| 久久99久久99小草精品免视看| 亚洲天堂成人av| 亚洲一区在线观看网站| 6—12呦国产精品| 国产一区二区三区在线视频| 岛国毛片av在线| 51国偷自产一区二区三区| 成人羞羞网站入口免费| 精品中文字幕av| www.亚洲人| 欧美精品一区二区蜜桃| 欧美日韩国产片| 9色在线视频网站| 国产第一区电影| 美女主播精品视频一二三四| 国产高清不卡无码视频| 久久99国产精品麻豆| 欧美午夜激情影院| 色网站国产精品| 欧美日韩视频精品二区| 1769国产精品| 98视频精品全部国产| 国产91porn| 国产一区二区三区四区在线观看| 91社区视频在线观看| 欧洲亚洲国产日韩| 成年网站在线| 国产精品欧美一区二区三区奶水| 免费看av成人| 国语对白做受xxxxx在线中国 | 2014亚洲天堂| 欧美男男青年gay1069videost | 国产无遮挡裸体免费久久| 国产欧美123| 国产高清在线观看免费不卡| 波多野结衣不卡视频| 欧美一卡二卡三卡| 影音先锋男人资源在线| www.成人av| 亚洲精品视频啊美女在线直播| 亚洲婷婷在线观看| 午夜激情综合网| 日韩二区三区| 国产精品91视频| 成人羞羞网站入口| 在线免费看污网站| 一区二区三区在线免费视频| 高清毛片aaaaaaaaa片| 性欧美亚洲xxxx乳在线观看| 久久久亚洲欧洲日产| 四虎永久在线精品无码视频| 国产午夜亚洲精品理论片色戒| 正在播放木下凛凛xv99| 久久久精品在线观看| 亚洲欧美日本国产| 精品少妇一区二区三区在线| 337p粉嫩大胆噜噜噜噜噜91av | 欧美变态凌虐bdsm| av在线最新| 日本亚洲欧洲精品| 久久99精品国产91久久来源| 福利所第一导航| 日韩精品一二三四区| av成人亚洲| 成人在线观看毛片| 91麻豆国产精品久久| 中文av免费观看| 欧美成人免费va影院高清| 久久porn| 在线观看日本一区二区| 亚洲自拍偷拍图区| 黄色在线观看网| 亚洲伊人久久大香线蕉av| 亚洲精品社区| 午夜成人亚洲理伦片在线观看| 精品国产乱码久久久久久久久| 高清不卡亚洲| 只有这里有精品| 91麻豆6部合集magnet| 伊人免费在线观看| 91精品国产99| 亚洲xxx拳头交| 国产精品无码午夜福利| 91精品国产高清一区二区三区蜜臀| av在线视屏| 日韩视频一二三| 国产欧美一区二区精品婷婷|