精品欧美一区二区三区在线观看 _久久久久国色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)

av一本久道久久波多野结衣| 中文字幕亚洲图片| 成人综合视频在线| 成人午夜影视| 丁香激情综合五月| 国产成人高潮免费观看精品| 在线看的片片片免费| 久久久亚洲欧洲日产| 欧美日韩一区中文字幕| 国产精品国产对白熟妇| www亚洲人| 99久久777色| 成人国内精品久久久久一区| 亚洲另类欧美日韩| 久久久久蜜桃| 亚洲欧美一区二区三区久久| 91亚洲一区二区| 激情开心成人网| 亚洲综合色婷婷| 亚洲国产高清国产精品| 国产综合视频在线| 精品一区二区久久| 国产va免费精品高清在线| 1024手机在线视频| 欧美日韩老妇| 亚洲精品视频久久| 人妻换人妻a片爽麻豆| av在线亚洲一区| 色综合久久综合中文综合网| 亚洲精品无码国产| 黄网站在线免费看| 国产精品日产欧美久久久久| 精品久久一区二区三区蜜桃| 精品久久无码中文字幕| 麻豆成人免费电影| 国产精品99久久久久久白浆小说 | 亚洲精品一二三四区| 日本一区视频在线观看| 亚洲三区在线观看无套内射| 国产一区二区三区观看| 国产精品美女在线观看| 无码人妻久久一区二区三区不卡| 亚洲国产黄色| 欧美激情国产日韩精品一区18| 中文字幕乱码av| 成人3d精品动漫精品一二三| 亚洲人高潮女人毛茸茸| 三级电影在线看| 任你弄精品视频免费观看| 亚洲成人aaa| 日批免费观看视频| 白嫩白嫩国产精品| 精品国产成人系列| 性农村xxxxx小树林| 最新国产一区二区| 亚洲第一网站免费视频| 国产精久久久久| 亚洲小说春色综合另类电影| 精品国产自在久精品国产| 午夜影院福利社| 丁香婷婷成人| 亚洲国产天堂久久国产91 | 国产三级精品三级在线专区| 欧美日韩三区四区| h网站在线免费观看| 日本一二三不卡| 一区二区在线不卡| 伊人春色在线观看| 亚洲电影在线播放| av动漫在线看| 伊人久久综合一区二区| 亚洲一区日韩精品中文字幕| 国产中文字幕视频在线观看| 欧美大片1688| 欧美精品丝袜中出| 日本中文字幕有码| 久久国产精品免费精品3p| 亚洲精品在线视频| 99热99这里只有精品| 欧美黄色aaaa| 奇米四色中文综合久久| 中文字幕 人妻熟女| 国产乱人伦精品一区二区在线观看| 北条麻妃高清一区| 三级黄视频在线观看| 欧美激情资源网| 热久久最新网址| 亚洲欧美一区二区三区| 精品视频在线视频| 国产乱淫av麻豆国产免费| 人人精品视频| 久久精品视频在线| 91蜜桃视频在线观看| 蜜臀av一区二区| 成人看片在线| 韩国三级av在线免费观看| 成人欧美一区二区三区小说 | 欧洲国产精品| 国产原创在线观看| 一本色道综合亚洲| 日本少妇xxx| 国产真实有声精品录音| 久久99久久99精品中文字幕| 日本视频在线观看免费| 极品少妇一区二区| 久久久精品有限公司| 成人影院在线观看| 色偷偷成人一区二区三区91| 国产精品欧美性爱| 欧美午夜精彩| 青青草国产精品一区二区| 99久久99久久久精品棕色圆| 久久精品视频一区二区三区| 青青草视频在线视频| 99精品在免费线偷拍| 亚洲大胆人体视频| 国产精品精品软件男同| 麻豆久久精品| 成人av资源| 黄av在线播放| 欧美亚洲图片小说| 日韩一级视频在线观看| 精品电影一区| 91高跟黑色丝袜呻吟在线观看| 国产对白叫床清晰在线播放| 精品久久久国产| 在线中文字日产幕| 国产大片一区| 国产精品视频xxx| 丁香在线视频| 日韩欧美中文在线| 亚洲精品中文字幕在线播放| 欧美午夜精品| 51精品国产人成在线观看| 色多多视频在线观看| 在线观看视频一区二区| 欧美图片第一页| 久久久精品五月天| 免费成人在线观看av| 两个人看的在线视频www| 日韩欧美一卡二卡| 男人操女人的视频网站| 极品少妇xxxx精品少妇| 裸体裸乳免费看| 四虎精品一区二区免费| 最近2019中文字幕在线高清| 国产精品无码一区| 中文字幕精品一区| 奇米影音第四色| 欧美三级美国一级| 国产精品偷伦一区二区| 在线观看a视频| 欧美美女视频在线观看| 色偷偷www8888| 精品一区二区三区香蕉蜜桃| 亚洲色图都市激情| 亚洲国产aⅴ精品一区二区| 久热精品视频在线| 亚洲黄色小说网| 亚洲3atv精品一区二区三区| 日韩精品一区二区三区高清免费| 中文亚洲免费| 日韩欧美第二区在线观看| 成人交换视频| 久久综合电影一区| 刘亦菲久久免费一区二区| 精品国产福利在线| 一级特黄曰皮片视频| 久久国产视频网| 欧美激情亚洲天堂| 欧美日韩导航| 国产精品久久久久一区二区| 无遮挡动作视频在线观看免费入口| 欧美一区二区三区在线观看视频| 久久黄色免费视频| 91麻豆精品视频| 一区二区免费av| 黄色成人在线网站| 欧美一区免费视频| 亚洲老司机网| 欧美激情视频播放| 黄色网址在线播放| 91精品国产91久久久久久一区二区| 久久激情免费视频| 久久精品视频在线免费观看| 在线观看av免费观看| 亚洲美女一区| 亚洲欧洲一区二区福利| 日韩成人久久| 国产精品国产三级国产aⅴ9色 | 少妇精品久久久| 92国产精品视频| 欧美大胆成人| 九九热这里只有精品6| 日本v片在线免费观看| 欧美美女网站色| 国产剧情在线视频| 亚洲人成网站在线| av网站免费在线看| 国产成人精品www牛牛影视| 欧美伦理片在线看| 激情综合亚洲| 日本三日本三级少妇三级66| 妖精一区二区三区精品视频| 亚洲影视中文字幕| 欧洲成人一区| 高清在线视频日韩欧美| 欧美jizzhd欧美| 亚洲丝袜在线视频| 人妻精品一区一区三区蜜桃91| 欧美日韩在线播放一区| 特级做a爱片免费69| 亚洲综合色网站| www.97视频| 国产色产综合色产在线视频| 亚洲综合自拍网| 国产精品系列在线观看| 一级在线免费视频| 免费看的黄色欧美网站| 欧美成人精品免费| 亚洲五月综合| 亚洲欧美电影在线观看| 久久最新网址| 久久艹中文字幕| 综合激情五月婷婷| 3d动漫啪啪精品一区二区免费| 欧洲午夜精品| 国产精品久久久久久久久久尿 | 欧美91福利在线观看| 亚洲欧美精品| 日韩av自拍| 日韩欧美一区二区三区久久婷婷| 任你弄精品视频免费观看| 国产视频精品网| 国偷自产视频一区二区久| 99re国产在线播放| 欧美午夜在线播放| 亚洲综合精品一区二区| 国产高清日韩| 91在线免费看网站| 日韩一级视频| 成人精品一区二区三区电影黑人 | 国产精品永久| 5月婷婷6月丁香| 国产欧美在线| 丰满人妻中伦妇伦精品app| 国产精品嫩草99av在线| 国产主播在线看| 亚洲欧美卡通另类91av| 99re在线视频免费观看| 久久国产66| 毛葺葺老太做受视频| 三级一区在线视频先锋| 丰满少妇在线观看| 日韩精品国产精品| 天堂网在线免费观看| 国产在线视频不卡二| 在线观看网站黄| 国产精品一二三| 一本色道久久hezyo无码| 成人黄色网址在线观看| 国产精品一级黄片| 久久久久国产精品免费免费搜索| 97在线观看免费视频| 国产精品久久久久婷婷二区次| 国产精品国产精品88| 一区二区三区四区激情| 亚欧视频在线观看| 色婷婷综合久久久| 一级特黄aaaaaa大片| 欧美一级视频精品观看| 六月婷婷综合网| 日韩精品免费在线观看| 国模吧精品人体gogo| 日韩中文字幕在线免费观看| av在线播放国产| 性金发美女69hd大尺寸| 成人网ww555视频免费看| 亚洲a中文字幕| 久久影视三级福利片| 日韩精彩视频| 欧美成人国产| 国产亚洲天堂网| 久久精品二区亚洲w码| 麻豆短视频在线观看| 国产三区在线成人av| 久久久久97国产| 91福利精品视频| 精品人妻一区二区三区四区不卡| 日韩电影免费在线观看中文字幕| yw193.com尤物在线| 欧美精品日韩三级| 亚洲1234区| 成人在线视频网址| 热久久天天拍国产| 亚洲熟妇无码一区二区三区导航| 免费在线成人网| www.17c.com喷水少妇| 国产精品毛片久久久久久久| 日本一区二区不卡在线| 欧美日韩免费一区二区三区| 天堂网在线观看视频| 久久亚洲精品成人| 不卡av播放| 国产精品日韩一区二区免费视频| 色中色综合网| 日韩有码免费视频| 国产精品自拍av| 欧美大波大乳巨大乳| 无吗不卡中文字幕| 国产高清视频免费观看| 色诱女教师一区二区三区| 中国字幕a在线看韩国电影| 成人av蜜桃| 欧美成熟视频| 手机免费av片| 日本一区二区三区四区 | 日韩激情美女| 成人黄色免费片| 欧美亚洲国产精品久久| 欧美性久久久久| 9l国产精品久久久久麻豆| 欧美成人免费观看视频| 欧美裸体一区二区三区| 国产毛片av在线| 日韩美女视频免费看| 日日天天久久| 国产精品久久久久9999爆乳| 精品一区二区在线视频| 国产综合精品久久久久成人av| 欧美性猛交xxxx免费看| 午夜成人免费影院| 久久久噜噜噜久久| а√中文在线天堂精品| 成人免费a级片| 成人午夜碰碰视频| 久草中文在线视频| 精品免费国产二区三区| 91高清在线观看视频| 91影视免费在线观看| 亚洲精品一二三区区别| 在线免费看污网站| 亚洲欧美综合另类在线卡通| 一区二区三区免费在线| 日韩专区在线观看| 96sao精品免费视频观看| 亚洲天堂av免费在线观看| 韩国成人精品a∨在线观看| 欧美爱爱免费视频| 欧美一级二级三级乱码| 18av在线视频| 国产精品区免费视频| 亚洲第一黄网| 亚洲一级中文字幕| 在线日韩av片| 欧美精品日韩少妇| 91aaaa| 欧美日韩国产亚洲一区| 无码人妻一区二区三区精品视频| 亚洲一级片在线观看| 人妻与黑人一区二区三区| 91精品国产99| 国产亚洲一区| 中文字幕在线观看日| 夜夜嗨av一区二区三区中文字幕| 国模私拍视频在线| 欧美一区二区大胆人体摄影专业网站| 亚洲传媒在线| 一区二区免费av| 亚洲一级二级在线| 欧美孕妇性xxxⅹ精品hd| 国产精品网站入口| 国内一区二区三区| 无套内谢大学处破女www小说| 在线观看www91| 久久黄色美女电影| 国产一区二区免费电影| 日韩av成人高清| 曰本女人与公拘交酡| 日韩二区三区在线| 国产人妖一区| 国产a级片网站| 国产精品久久三| 色欲av伊人久久大香线蕉影院| 国产suv精品一区二区| 中文精品久久| 色无极影院亚洲| 日韩免费视频一区| 偷拍视频一区二区三区| 国产午夜精品视频一区二区三区| av色综合久久天堂av综合| 中文字幕福利视频| 久久久免费高清电视剧观看| 精品中文字幕一区二区三区av| 污视频在线观看免费网站| 日本精品一区二区三区四区的功能| mm1313亚洲国产精品美女| 蜜桃av久久久亚洲精品| 国产乱码精品一品二品| 久草热在线观看|