精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

中文字幕超碰在线| 伊人网综合视频| www视频在线看| 成人午夜碰碰视频| 国产91在线播放| 91麻豆免费视频网站| 97se亚洲| 色综合亚洲欧洲| 女女同性女同一区二区三区按摩| 免费观看黄色av| 日本不卡一区二区三区| 欧美精品日韩三级| 亚洲精品国产一区黑色丝袜| 亚洲精品一二三**| 欧美日韩中文另类| 久久久久久久中文| av毛片在线| 欧美激情资源网| 国产中文一区二区| 国产乱色精品成人免费视频| 久久亚洲国产精品一区二区| 欧美激情视频播放| 五月天色婷婷丁香| 精品一区免费| 欧美成人高清电影在线| 日本不卡一区在线| 性欧美freesex顶级少妇| 亚洲蜜臀av乱码久久精品蜜桃| 欧美另类一区| 午夜在线观看视频18| 国产69精品久久777的优势| 国产精品久久久久国产a级| 日韩少妇裸体做爰视频| 欧美精品aa| 久久国产精品久久久久| 五月婷婷婷婷婷| av中文一区| 亚洲欧洲自拍偷拍| 精品国产av色一区二区深夜久久 | 亚洲精品tv久久久久久久久久| 亚洲精品视频久久| 免费的av网站| 欧美激情99| 亚洲成人av片在线观看| 成年人性生活视频| 久久69av| 日韩免费在线观看| 国产无套精品一区二区三区| 精品久久久久久久久久岛国gif| 欧美日韩国产影片| 成人不卡免费视频| 91精品一久久香蕉国产线看观看 | 国产欧美日韩精品高清二区综合区| 亚洲精品久久久久久久久久久久| 男女一区二区三区| 天堂成人娱乐在线视频免费播放网站| 亚洲第一天堂无码专区| 亚洲婷婷在线观看| 欧美调教视频| 亚洲全黄一级网站| 在线观看亚洲大片短视频| 成人无号精品一区二区三区| 中文字幕无线精品亚洲乱码一区| a一级免费视频| 中文无码久久精品| 国语自产偷拍精品视频偷| 在线观看亚洲欧美| 日韩高清电影一区| 国产女精品视频网站免费| 夜夜爽8888| 国产美女娇喘av呻吟久久| 97久久天天综合色天天综合色hd| 国内精品偷拍视频| 99在线精品一区二区三区| 老牛影视免费一区二区| 久草福利在线| 日韩一区日韩二区| 青草视频在线观看视频| 精品三级久久| 欧美性色欧美a在线播放| 涩多多在线观看| 久久精品福利| 在线播放日韩专区| 激情五月婷婷在线| 久久久久久久尹人综合网亚洲 | 日韩一区二区三区精品| 精品亚洲一区二区三区在线播放 | 93在线视频精品免费观看| 日韩视频精品在线| 日本视频免费在线| 麻豆极品一区二区三区| 国产精品成人一区二区三区| 黄色av免费在线看| 一区二区高清视频在线观看| 国产精品丝袜久久久久久消防器材| 91九色综合| 亚洲国产一区自拍| 日韩亚洲欧美中文字幕| 国产视频亚洲| 亚洲综合日韩在线| 触手亚洲一区二区三区| 亚洲午夜久久久久久久久电影网| 天堂中文视频在线| 国产精品男女| 欧美xxxx做受欧美.88| 一区二区三区在线观看av| 国产精品一区二区三区99| 欧美三级电影在线播放| 日本精品600av| 欧美日韩综合不卡| 久久久久亚洲av无码专区桃色| 一区二区三区四区在线观看国产日韩| 51午夜精品视频| www精品国产| 亚洲国产成人自拍| 日韩欧美精品在线观看视频| 亚洲乱码一区| 久久精品男人天堂| 欧美一级做a爰片免费视频| 成人一区二区三区中文字幕| 91手机视频在线| 成人免费在线观看视频| 国产视频在线一区二区| 亚洲精品午夜久久久久久久| 极品美女销魂一区二区三区 | 国内久久精品| 成人午夜在线视频一区| 福利视频在线导航| 色av成人天堂桃色av| 成人午夜精品无码区| 欧美99久久| 成人黄色免费在线观看| 95在线视频| 欧美视频日韩视频在线观看| 一级特级黄色片| 影音先锋久久| 91在线短视频| 伊人影院在线视频| 欧美一区二区三区免费观看视频| 免费成人深夜蜜桃视频 | 伊人久久久久久久久| 久久精品国内一区二区三区水蜜桃| 国产精品福利网站| 成人影院免费观看| 在线观看91精品国产入口| 欧美丰满少妇人妻精品| 在线视频日韩| 久久国产日韩欧美| 中文在线免费二区三区| 亚洲欧美中文字幕| 国产一级片免费在线观看| 国产亚洲精品精华液| 国产精品涩涩涩视频网站| 精品国产精品| 国产伊人精品在线| 成人短视频在线观看| 欧美一二三在线| 久久精品国产亚洲AV无码麻豆| 国产a区久久久| 青青青青草视频| 三级精品视频| 国产精品视频免费在线| 麻豆91在线| 欧美tk—视频vk| 圆产精品久久久久久久久久久| 97久久精品人人做人人爽50路| 亚洲精品无码久久久久久| 欧美日韩一区二区三区视频播放| 国产欧美精品日韩精品| 国产原创在线观看| 精品国产污污免费网站入口 | 老司机一区二区| 一区二区三区日韩视频| 试看120秒一区二区三区| 97视频在线免费观看| 毛片网站在线观看| 在线观看91av| 亚洲精品午夜久久久久久久| 国产清纯在线一区二区www| 五月婷婷之婷婷| 亚洲日本国产| 亚洲国产另类久久久精品极度| 国产亚洲高清一区| 欧美最顶级的aⅴ艳星| 91涩漫在线观看| 欧美sm极限捆绑bd| 欧美人一级淫片a免费播放| 亚洲视频在线观看三级| 欧美 变态 另类 人妖| 免费一级片91| 人妻夜夜添夜夜无码av| 日韩精品一区二区三区免费观看| 成人免费视频观看视频| 欧美va在线观看| 精品少妇v888av| 成人免费高清在线播放| 精品国产91乱码一区二区三区| 国产熟妇一区二区三区四区| 亚洲日本欧美天堂| 成人免费网站黄| 国产高清成人在线| 免费看黄色一级大片| 国内久久精品| 中文字幕一区二区三区四区五区六区| 欧美日日夜夜| 亚洲自拍偷拍色片视频| 国产精品久久久久av电视剧| 欧美激情精品久久久久久| av在线免费一区| 日韩激情视频在线播放| 国产后入清纯学生妹| 欧美性色黄大片手机版| 天天做天天爱夜夜爽| 亚洲在线一区二区三区| 黄色裸体一级片| 成年人网站91| 亚洲成人福利视频| 国产主播一区二区| 免费看污黄网站| 免费在线亚洲| 两根大肉大捧一进一出好爽视频| 永久亚洲成a人片777777| 亚洲不卡中文字幕| 精品精品精品| 国产精品一 二 三| 51社区在线成人免费视频| 国产日韩中文字幕| 国产精品一区二区免费福利视频| 国产97免费视| 午夜无码国产理论在线| 亚州国产精品久久久| 懂色av一区| 久久青草精品视频免费观看| 在线观看av免费| 成人444kkkk在线观看| 在线播放成人av| 无码国模国产在线观看| 国内外成人免费激情在线视频| 黄色成人影院| 日韩最新av在线| 国产一区精品| 国产一区二区动漫| 国模吧精品人体gogo| 精品偷拍各种wc美女嘘嘘| 五月婷婷伊人网| 精品在线小视频| 日本一区高清| 亚洲精品视频免费| 欧美中文在线| 国产一区二区三区18| 国产三级电影在线观看| 国产亚洲精品久久| 1区2区3区在线观看| 中文字幕日韩精品在线| 麻豆网站视频在线观看| 久久香蕉频线观| 欧美xxx黑人xxx水蜜桃| 久久久久久久久久久免费| 末成年女av片一区二区下载| 欧美一级片在线播放| 神马久久资源| 国产欧美日韩最新| 欧美影院精品| 精品久久久久久综合日本| 亚洲瘦老头同性70tv| 亚洲一卡二卡| 欧美aⅴ99久久黑人专区| 国产在线视频综合| 国产精品丝袜xxxxxxx| 青青草av网站| 国产一区二区电影| 大尺度做爰床戏呻吟舒畅| 久久嫩草精品久久久久| 日日操免费视频| 亚洲综合免费观看高清完整版在线| 亚洲欧美在线观看视频| 欧美午夜精品理论片a级按摩| 国产免费av电影| 亚洲精品wwww| 青青影院在线观看| 久久久久久久爱| 99re久久| 国产精品v欧美精品v日韩精品| 一区二区三区视频免费观看| 一本一本久久a久久精品综合妖精| 午夜日韩电影| 黄色片一级视频| 国产一区美女在线| 亚洲av片不卡无码久久| 亚洲欧洲一区二区三区| 日韩特黄一级片| 欧美剧情片在线观看| 黑人乱码一区二区三区av| 伊人av综合网| 国产精品探花在线| 国产精品亚洲一区二区三区| 国产精品传媒| 午夜探花在线观看| 性欧美xxxx大乳国产app| 亚洲无在线观看| 久久久精品黄色| 午夜69成人做爰视频| 在线视频一区二区三| 日韩一区二区三区不卡| 久久九九亚洲综合| 国精产品一区二区三区有限公司 | 欧美精品一区二区免费| 毛片免费看不卡网站| 国产91aaa| 91精品国产成人观看| 黄色国产精品视频| 成人福利视频网站| 国产av 一区二区三区| 欧美在线啊v一区| 日韩三级电影网| 久久久中文字幕| 视频二区欧美| 亚洲第一精品区| 日韩电影一区二区三区| 国产又黄又粗又猛又爽的视频| 欧美草逼视频| 欧美日本在线播放| 国产在线资源| 2020国产精品视频| 99re6热只有精品免费观看| 尤物国产精品| 欧美aaaaaa午夜精品| 国产全是老熟女太爽了| 午夜不卡在线视频| 欧美自拍偷拍一区二区| 色与欲影视天天看综合网| 91九色成人| 日韩第一页在线观看| 美女高潮久久久| 欧美日韩生活片| 欧美日韩亚洲丝袜制服| 国产精品ⅴa有声小说| 国产精品扒开腿爽爽爽视频| 亚洲bt欧美bt精品777| 国产原创popny丨九色| 不卡av电影在线播放| 日本免费一二三区| 亚洲第一在线视频| 91制片在线观看| 国产日韩久久| 午夜宅男久久久| 女女互磨互喷水高潮les呻吟 | 久久久国产精品麻豆| 久久青青草原亚洲av无码麻豆| 日韩精品视频在线| 亚洲一二三四| 欧洲高清一区二区| 理论片日本一区| 国产一二三四区| 精品国产乱码久久久久久影片| av中文字幕在线看| 久久99精品久久久久久三级| 国产精品一卡| 人妻精品久久久久中文| 欧美日韩精品一区二区三区蜜桃| 天天影视久久综合| 99久久自偷自偷国产精品不卡| 极品av少妇一区二区| 女同毛片一区二区三区| 欧美视频三区在线播放| 激情成人四房播| 国产精品一区二区你懂得| 国产午夜精品一区二区三区欧美 | 婷婷综合网站| 中文在线字幕观看| 懂色aⅴ精品一区二区三区蜜月| 国产小视频在线播放| 国产日韩一区在线| 韩日成人av| 国产成人精品无码免费看夜聊软件| 欧美影视一区在线| 尤物yw193can在线观看| 黑人中文字幕一区二区三区| 久久久久91| 欧美日韩精品在线观看视频| 精品视频在线播放色网色视频| 国产精品高潮久久| 日韩中文字幕在线免费| 国产亚洲一区二区三区四区| 国产精品玖玖玖| 91超碰中文字幕久久精品| 99视频精品全国免费| 日韩电视剧在线观看免费网站 | 91色porny| 亚洲一卡二卡在线观看| 午夜精品久久久久久久白皮肤| 精品av一区二区| 色诱av手机版| 欧美三级欧美一级| 2021天堂中文幕一二区在线观| 日韩精品久久久| 国产91精品入口| 精品国产青草久久久久96| 久久久久国产一区二区三区| 久久激情电影|