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

使用Spring對(duì)Postgres實(shí)現(xiàn)可擴(kuò)展寫入

譯文
數(shù)據(jù)庫(kù) PostgreSQL
本文著重介紹了我們公司如何應(yīng)對(duì)基礎(chǔ)架構(gòu)擴(kuò)展方面的諸多挑戰(zhàn)之一:使用Spring和 Spring Data對(duì)Postgres數(shù)據(jù)庫(kù)實(shí)現(xiàn)可擴(kuò)展寫入。

?譯者 | 布加迪

審校 | 孫淑娟

每個(gè)與客戶產(chǎn)生共鳴的技術(shù)型組織最終都會(huì)遇到擴(kuò)展問題。擴(kuò)展產(chǎn)品和組織對(duì)您的流程和基礎(chǔ)架構(gòu)提出了新的要求。本文著重介紹了我們公司如何應(yīng)對(duì)基礎(chǔ)架構(gòu)擴(kuò)展方面的諸多挑戰(zhàn)之一:使用Spring和Spring Data對(duì)Postgres數(shù)據(jù)庫(kù)實(shí)現(xiàn)可擴(kuò)展寫入。

隨著用戶群越來越龐大,我們開始遇到一些性能問題,主要是受到我們的上游Postgres 數(shù)據(jù)庫(kù)的制約。我們的RPS(每秒請(qǐng)求)在短短幾個(gè)月內(nèi)就從<50增加到了超過180,我們開始遇到SQL連接超時(shí)、連接斷開和延遲顯著增加等問題。這導(dǎo)致客戶體驗(yàn)下降,這是不可接受的。

因此,我們著手研究如何消除這些Postgres瓶頸。我們很快意識(shí)到耗費(fèi)太多的周期進(jìn)行數(shù)據(jù)庫(kù)寫入,這阻塞了系統(tǒng)。對(duì)Postgres的每次寫入都是一次調(diào)用,這意味著如果我們想將50行保存到數(shù)據(jù)庫(kù)中,每行將調(diào)用1次,而不是執(zhí)行一次SQL調(diào)用來保存所有這50行!

根本原因:在Hibernate中使用IDENTITY生成ID值

為什么我們無(wú)法進(jìn)行批量更新?事實(shí)證明,問題與我們?nèi)绾问褂肏ibernate為數(shù)據(jù)庫(kù)中的實(shí)體生成標(biāo)識(shí)符值(即主鍵)有關(guān)。

我們使用的方法需要從IDENTITY列檢索值,新實(shí)體插入數(shù)據(jù)庫(kù)時(shí)??,Hibernate動(dòng)態(tài)維護(hù)這些列。我們針對(duì)新資源寫入數(shù)據(jù)庫(kù)是在沒有指定id(主鍵)的情況下完成的,改而使用GenerationType.IDENTITY。

這是我們的Spring實(shí)體的樣子:

Kotlin
@Entity
@Table(name = "entity")
data class Entity(
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
val id: Long? = null,
val metadata: String,
) : TenantEntity()

采用這種策略后,使用ORM來創(chuàng)建和更新現(xiàn)有資源顯得非常簡(jiǎn)單:

  • 如果沒有傳遞id,會(huì)創(chuàng)建一個(gè)新行。
  • 如果傳遞了id,會(huì)更新現(xiàn)有行。

是不是聽起來很簡(jiǎn)單?我們也是這么想的!而且似乎效果良好,直到后來我們意識(shí)到使用IDENTITY帶來了嚴(yán)重的性能問題。這種策略的缺點(diǎn)是批量更新不起作用。

這給我們帶來了一個(gè)大問題,因?yàn)槲覀兊乃袑?shí)體都使用IDENTITY標(biāo)識(shí)符值生成。對(duì)于每個(gè)現(xiàn)有的表及對(duì)應(yīng)的實(shí)體,我們必須將策略從IDENTITY換成支持批量插入語(yǔ)句的不同策略。

從IDENTITY遷移到基于序列的ID生成

我們研究可用于支持批處理的實(shí)體的其他生成類型后,遇到了Hibernate基于序列的標(biāo)識(shí)符值生成。這個(gè)策略得到底層數(shù)據(jù)庫(kù)序列的支持。Hibernate從序列中請(qǐng)求下一個(gè)可用的id,為資源獲取新的id。

雖然該策略的底層機(jī)制超出了本文的討論范圍,但結(jié)論是,這種基于序列的策略將為我們實(shí)現(xiàn)批量插入。

現(xiàn)在我們需要弄清楚如何從現(xiàn)有的IDENTITY策略遷移到基于序列的新方法。

進(jìn)一步調(diào)查后,我們意識(shí)到現(xiàn)有的表已經(jīng)有一個(gè)Postgres序列。所以如果我們有一個(gè)這樣定義的表:

SQL
CREATE TABLE IF NOT EXISTS entity (
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
...
)

將創(chuàng)建一個(gè)名為entity_id_seq的序列!

您可以運(yùn)行以下SQL命令來檢查序列是否存在:

SELECT
*
FROM
pg_sequence
WHERE
seqrelid = 'entity_id_seq'::regclass;

由于我們能夠輕松訪問Postgres表的序列,因此可以進(jìn)行非常本地化的更改,改而使用基于序列的策略來生成id。

對(duì)于每個(gè)實(shí)體,我們只需更改幾行代碼即可解決性能瓶頸。更新后的實(shí)體如下所示:

Kotlin
private const val TABLE = "entity"
private const val SEQUENCE = "${TABLE}_id_seq"
@Entity
@Table(name = TABLE)
data class Entity(
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = SEQUENCE)
@SequenceGenerator(name = SEQUENCE, sequenceName = SEQUENCE, allocationSize = 50)
@Column(name = "id")
val id: Long? = null,
val metadata: String,
) : TenantEntity()

AllocationSize和序列增量大小

這里需要說明的一點(diǎn)是,Hibernate中的allocationSize屬性需要與Postgres中底層序列的增量大小相同。

這是為了讓Hibernate和底層序列在它們擁有的id方面“同步”。這還可以防止多臺(tái)服務(wù)器寫入到同一個(gè)表的分布式架構(gòu)出現(xiàn)任何問題。

默認(rèn)情況下,Postgres序列的增量大小為1。我們寫了一個(gè)非常快速的遷移來更改它,以便與我們的allocationSize匹配:

ALTER SEQUENCE entity_id_seq INCREMENT 50;

現(xiàn)在,Hibernate只需要進(jìn)行1次調(diào)用,即可獲取每50次插入的id列表。

它也只需要1次調(diào)用即可插入這50行。

以下是我們從這個(gè)問題中得出的總結(jié):

  • 如使用Hibernate,盡快開始使用基于數(shù)據(jù)庫(kù)序列的身份值生成,尤其是在您預(yù)見到寫入次數(shù)會(huì)增加的情況下。
  • 保持allocationSize和底層Postgres序列增量大小參數(shù)相同,避免id沖突,并支持分布式系統(tǒng)。

最后,這是我們實(shí)施該更改后RPS從近180變成約90的屏幕截圖。

原文標(biāo)題:??Scalable Writes to Postgres With Spring??,作者:Aditya Bansal?

責(zé)任編輯:華軒 來源: 51CTO
相關(guān)推薦

2023-11-09 08:31:56

Spring微服務(wù)網(wǎng)關(guān)

2024-01-23 18:53:04

PostgreSQL關(guān)系數(shù)據(jù)庫(kù)

2023-12-12 07:30:54

IstioWasm前端

2025-02-10 10:54:53

PostgresDBpgvector數(shù)據(jù)庫(kù)

2021-05-17 07:28:23

Spring可擴(kuò)展性項(xiàng)目

2020-02-12 09:00:48

數(shù)據(jù)網(wǎng)格Apache Igni數(shù)據(jù)管理

2015-04-23 13:29:02

Flume分布式服務(wù)HDFS

2009-03-16 09:16:13

行為擴(kuò)展WCF.NET

2019-05-20 13:20:36

Python編程語(yǔ)言情感分析

2024-09-23 00:00:10

2016-08-24 19:22:10

Docker SwarPython應(yīng)用

2013-06-25 21:08:33

Active PoweDatum環(huán)保

2016-10-31 11:26:13

ReactRedux前端應(yīng)用

2017-04-28 08:32:40

Spring BootDubbo Activ使用

2024-02-01 08:28:28

2017-05-09 10:34:21

Spring BootDubbo Activ擴(kuò)展

2025-05-06 08:09:02

2022-05-30 09:32:07

Spring容器

2025-05-28 02:55:00

PostgresOTelIceberg

2009-08-31 14:45:10

C#擴(kuò)展方法
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

色综合天天色| 免费网站观看www在线观| 日韩精品美女| 中文字幕欧美日韩一区| 成人免费看吃奶视频网站| 欧美性x x x| 女仆av观看一区| 欧美日韩一区成人| 欧美黄网在线观看| 日韩精品视频无播放器在线看 | 99久久久精品| 国产精品视频男人的天堂| 日韩在线观看视频一区二区| 丝袜久久网站| 这里只有精品电影| 少妇性饥渴无码a区免费| 日本美女在线中文版| 97se亚洲国产综合自在线| 国产美女久久精品| yjizz国产| 欧美一区亚洲| 日韩资源在线观看| 中文字幕高清视频| 中文字幕日韩在线| 欧美绝品在线观看成人午夜影视| 波多野结衣家庭教师视频| 丝袜在线视频| 成人欧美一区二区三区视频网页| 精品免费国产| 午夜精品一区二区三| 男人的天堂久久精品| 4388成人网| 九九九国产视频| 亚洲国产一成人久久精品| 亚洲午夜精品久久久久久性色| 中文字幕第六页| 视频欧美精品| 欧美日韩在线播放三区| 欧美 日韩精品| 两个人看的在线视频www| 一区二区激情小说| 男人的天堂成人| 视频一区二区三区不卡| 国产网红主播福利一区二区| 久久精彩视频| 亚洲 精品 综合 精品 自拍| 成人国产一区二区三区精品| 成人午夜小视频| 亚洲无码久久久久久久| 日韩经典中文字幕一区| 国产精品白丝jk喷水视频一区| 日韩久久精品视频| 亚洲麻豆av| 午夜免费日韩视频| 日韩精品乱码久久久久久| 国内成人在线| 久久久久久久久久国产| 久久综合久久鬼| 99视频一区| 欧美亚洲在线观看| 三级网站在线播放 | 玖玖爱视频在线| 久久久精品一区二区毛片免费看| 在线亚洲+欧美+日本专区| 国产av无码专区亚洲精品| 国产精品伦理| 欧美揉bbbbb揉bbbbb| 久久99爱视频| 国产一区二区三区免费在线| 欧美成人a在线| 国产精品手机在线观看| 欧美变态网站| 亚洲色图15p| 国产在线免费av| 888久久久| 国内精品久久久久久中文字幕| 日韩精品――中文字幕| 肉丝袜脚交视频一区二区| 国产精品在线看| 亚洲黄色在线播放| 91女神在线视频| 亚洲精品一区二| 婷婷色在线资源| 欧美日韩国产一区二区三区| 噼里啪啦国语在线观看免费版高清版| 欧美三级电影网址| 精品国产免费人成电影在线观看四季 | 亚洲国产天堂| 精品成a人在线观看| 国产又爽又黄无码无遮挡在线观看| 精品72久久久久中文字幕| 日韩在线观看免费高清完整版| 欧美黑人一级片| 三级精品在线观看| http;//www.99re视频| 天堂在线中文| 日本一区二区三区在线不卡| 国产免费内射又粗又爽密桃视频| 天堂av在线网| 欧美一区二区免费| 美女洗澡无遮挡| 最新精品国产| 国产精品老女人精品视频| 高清毛片aaaaaaaaa片| 国产欧美日韩三区| 给我免费播放片在线观看| 99re久久| 亚洲精品99久久久久中文字幕| 中国1级黄色片| 国产精品资源| 亚洲综合中文字幕68页| 激情福利在线| 亚洲高清视频在线| av在线免费看片| 久久不卡国产精品一区二区| 欧美高跟鞋交xxxxxhd| www.亚洲激情| 99精品1区2区| 国产免费黄色一级片| 亚洲日本中文| 影音先锋欧美精品| 制服.丝袜.亚洲.中文.综合懂色| 国产精品99久| 日韩视频在线观看视频| 国产v综合v| 日韩精品免费综合视频在线播放| 紧身裙女教师波多野结衣| 视频在线观看一区| 久草热久草热线频97精品| 色呦呦呦在线观看| 日韩一区二区三区高清免费看看| 18精品爽国产三级网站| 性欧美videos另类喷潮| 国产精品乱子乱xxxx| 在线āv视频| 91精品在线免费观看| 国产欧美小视频| 日本成人在线视频网站| 日韩电影免费观看在| 欧美日韩视频网站| 亚洲欧美日韩区| 久久久久99精品成人片我成大片 | 国产一区二区三区四区五区六区| 亚洲国产免费看| 国产精品.com| 丁香花高清在线观看完整版| 精品国产精品一区二区夜夜嗨| 黑人巨大精品一区二区在线| 国产精一区二区三区| 99亚洲国产精品| 久久综合给合| 欧美激情国产精品| 亚洲黄色小说网址| 亚洲成av人片一区二区梦乃| 中国黄色片视频| 亚洲美女色禁图| 久久精品人成| 欧美性xxx| 伊人av综合网| 一区二区不卡视频在线观看| 成人免费在线观看入口| 日韩精品aaa| 欧美视频久久| 欧美日产一区二区三区在线观看| 国模套图日韩精品一区二区| 一区二区三区久久精品| 一道本在线视频| 一区二区三区欧美亚洲| 91传媒理伦片在线观看| 在线综合欧美| 亚洲国产成人不卡| 国产一区二区av在线| 久久久中文字幕| 可以免费看污视频的网站在线| 欧美在线综合视频| 天天操天天操天天操天天操天天操| 国产91精品久久久久久久网曝门| 国产精品333| 日韩a一区二区| av日韩免费电影| 亚洲性受xxx喷奶水| 在线播放日韩av| 成 人 免费 黄 色| 狠狠干狠狠久久| 91香蕉视频网| av亚洲精华国产精华精华| 丁香婷婷激情网| 欧美国产另类| 欧美一区观看| 一本一道久久a久久| 欧美一级视频在线观看| 亚洲视频tv| 日韩精品久久久久久久玫瑰园| 又骚又黄的视频| 午夜精品久久久久久久蜜桃app | 亚洲精品99| 久久久久一区二区| 成人免费观看49www在线观看| 性色av一区二区三区在线观看| 91se在线| 日韩精品黄色网| 成 人 黄 色 片 在线播放| 91国偷自产一区二区三区观看| 亚洲成人生活片| 国产香蕉久久精品综合网| 成人啪啪18免费游戏链接| 日韩黄色片在线观看| 国产欧美精品aaaaaa片| 日韩av免费大片| 欧美激情第六页| 超碰97久久国产精品牛牛| 国产日韩精品入口| 成人小电影网站| 久久久免费观看视频| 天堂аⅴ在线地址8| 亚洲欧美激情另类校园| 亚洲成人一级片| 91麻豆精品国产自产在线| 久久久蜜桃一区二区| 精品欧美国产一区二区三区| 免费在线观看一级片| 国产精品乱码妇女bbbb| 91成人破解版| 91丨porny丨最新| 激情av中文字幕| 国产呦萝稀缺另类资源| 一区二区xxx| 老妇喷水一区二区三区| 免费 成 人 黄 色| 伊人成年综合电影网| 影音先锋成人资源网站| 国产精品国产三级国产在线观看| 日韩欧美第二区在线观看| 日韩有码一区| 久久免费看av| 蜜桃一区二区三区| 久久精品magnetxturnbtih| 国产精品对白久久久久粗| 国产经品一区二区| 大型av综合网站| 国产精品免费区二区三区观看| 亚洲午夜精品| 97超碰人人看人人| 99精品国产高清一区二区麻豆| 亚洲黄色成人久久久| 狠狠久久伊人| 国产精品一区二区三区四区五区 | 91亚洲天堂| 久久这里有精品| 爆操欧美美女| 久久综合九色九九| gogogogo高清视频在线| 久久最新资源网| а√中文在线8| 久久久久久国产精品美女| 欧美精品videossex少妇| 欧美激情视频在线| 91超碰国产在线| 97超级碰碰碰| 欧美美女日韩| 91精品久久久久久久久中文字幕 | 日韩片之四级片| 黑人精品一区二区| 精品亚洲一区二区三区在线观看 | 亚洲欧洲成人精品av97| 欧美激情精品久久久久久免费| 成人免费在线观看入口| 精品97人妻无码中文永久在线 | 欧美老妇交乱视频| 欧美日韩经典丝袜| 555www成人网| 日韩大陆av| www.久久艹| 婷婷五月色综合香五月| 亚洲不卡1区| 欧美另类专区| 日本成年人网址| 国产一区在线看| 国产精品无码电影| 国产午夜精品在线观看| 国产视频精品免费| 亚洲国产精品久久久久秋霞影院| 亚洲wwww| 婷婷av在线| 日韩在线观看免费网站| а√资源新版在线天堂| 91国产高清在线| 成人一区视频| 国产精品久久久一区二区三区| 免费毛片在线不卡| 欧美美女一区二区在线观看| a在线观看免费| 精品亚洲一区二区三区| 黄色的网站在线观看| 性欧美xxxx| 伊人国产精品| 免费成人深夜夜行视频| 我不卡手机影院| 成年人免费在线播放| 国内精品免费在线观看| 女尊高h男高潮呻吟| 最好看的中文字幕久久| 五月天综合激情| 日韩一区二区三区四区| 国产在线视频网站| 欧美激情xxxx| 二区三区精品| 日韩区国产区| 亚洲另类视频| 爱情岛论坛亚洲自拍| 欧美国产国产综合| av黄色在线看| 欧美v日韩v国产v| 免费在线看黄| 国产精品电影网| 亚洲都市激情| 日韩亚洲欧美视频| 国产乱淫av一区二区三区 | 久久久久一区二区三区四区| 免费在线观看日韩| 欧美精品 国产精品| 精品影院一区| 欧美一级淫片videoshd| 成人知道污网站| 肉大捧一出免费观看网站在线播放 | 一级黄色大片免费| 亚洲欧美变态国产另类| www555久久| 翡翠波斯猫1977年美国| 亚洲最大黄网| 精品人妻一区二区三| 国产精品久久久久久久久果冻传媒| 亚洲 欧美 成人| 亚洲美女在线视频| 蜜臀久久精品| 九色91视频| 美女诱惑一区| 中文字幕一区二区久久人妻网站| 午夜精品一区二区三区三上悠亚 | 亚洲精品毛片| 亚洲一区高清| 精品一区二区三区在线观看国产| 亚洲一级理论片| 欧美日韩精品一二三区| 黄色在线视频观看网站| 日韩美女在线看| 精品av一区二区| 亚洲精品自拍网| 国产精品入口麻豆原神| 中文字幕在线观看高清| 最近2019年日本中文免费字幕| 久久av日韩| 91社在线播放| 国产成人啪午夜精品网站男同| 免费无码毛片一区二区app| 精品日韩成人av| 岛国av在线播放| 欧美日韩喷水| 美国欧美日韩国产在线播放| 懂色av粉嫩av蜜臀av一区二区三区| 欧美高清www午色夜在线视频| 国产盗摄在线观看| 俄罗斯精品一区二区| 国产日韩一区| 99精品全国免费观看| 欧美福利一区二区| 污片在线免费观看| 九色91国产| 久久激五月天综合精品| 国产av 一区二区三区| 精品国产一区二区三区四区四| 美女的胸无遮挡在线观看| 欧美日韩在线不卡一区| 久久99热99| 国产精品第一页在线观看| 亚洲精品视频二区| 欧美久久久网站| www.avtt| 欧美激情在线看| 草逼视频免费看| 国产成人在线精品| 亚洲理论电影网| 亚洲观看黄色网| 欧美日韩午夜影院| 日本理论片午伦夜理片在线观看| 久久精品国产一区二区三区日韩| 青青草一区二区三区| 久久久久性色av无码一区二区| 亚洲毛片在线免费观看| 日韩福利在线观看| 国产婷婷一区二区三区| 欧美国产精品一区| 精品国产一区二区三区麻豆小说 | 99国产精品99| 欧美国产精品人人做人人爱| 自拍偷拍精品| 国产99在线|中文| 国产高清欧美| 好吊色视频一区二区三区| 在线观看av一区二区|