国产一区二区精品-国产一区二区精品久-国产一区二区精品久久-国产一区二区精品久久91-免费毛片播放-免费毛片基地

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 兩個人同時操縱數據庫,怎么處理并發問題?

兩個人同時操縱數據庫,怎么處理并發問題?

來源:千鋒教育
發布人:xqq
時間: 2023-10-13 12:16:18 1697170578

一、兩個人同時操縱數據庫,怎么處理并發問題

從數據庫層面上,有三種解決方式:

1.悲觀鎖

select XXX from 商品庫存表 for update 。

用戶A 和B 同時操作一個商品的庫存,數據庫層面上,必有一個先后順序。

先執行select XXX for update 的,會得到數據庫層面上的鎖。 后到的,程序會阻塞在這一句,直到前一個釋放鎖。

壞處是 系統并發數到此處會急劇減小。畢竟 只能有一個用戶操作,其他人都要等著。

2.樂觀鎖

名列前茅步: 代碼中查詢商品庫存信息,并校驗數量是否大于1

Product p = getFromDB(productId);

Date lastUpdateTime = p.getUpdateTime;

if(p.total<1){

retrun;

}

第二步:更新庫存

update XXX set total =total – 1 , updateTime=now() where productId = 123 and updateTime = lastUpdateTime ;

關鍵點在于判斷影響行數是否為0。

如果為0 ,則說明執行sql的時候,已經沒庫存了。

核心在于 where 中的 updateTime = lastUpdateTime 。

lastUpdateTime 是上一步我們查詢的修改之前的更新時間。如果其他線程修改并提交了事務,那么數據庫此刻的UpdateTime 必定和我們之前查詢出來的不一致,所以where返回空,也不會修改數據。

建議使用:

update XXX set total =newTotal , updateTime=now() where productId = 123 and total=oldTotal and updateTime = lastUpdateTime ;

具體原因同3

3.單純的sql語句

update XXX set total =total – 1 where productId = 123 and total>=1 。

本質是在 數據庫層面 針對 數量進行增量修改(set total =total – 1 ),以及修改的時候,判斷是否可以進行庫存扣減( total>=1 )

延伸閱讀:

二、信息抽取是什么

信息抽取(infromation extraction)信息抽取是一種自動化地從半結構化和無結構數據中抽取實體、關系以及實體屬性等結構化信息的技術。關鍵技術包括:實體抽取、關系抽取和屬性抽取。

1、實體抽取,也稱為命名實體識別(named entity recognition,NER),是指從文本數據集中自動識別出命名實體。

當前主流技術為面向開放域(open domain)的實體抽取。

2、關系抽取,為了得到語義信息,從相關語料中提取出實體之間的關聯關系,通過關系將實體聯系起來,才能夠形成網狀的知識結構。其技術研究已經從早期的“人工構造語法和語義規則”(模式匹配),“統計機器學習”發展到“面向開放域的信息抽取方法”與“面向封閉領域的方法”相結合。

3、屬性抽取,目標是從不同信息源中采集特定實體的屬性信息,如針對某個公眾人物,可以從網絡公開信息中得到其昵稱、生日、國籍、教育背景等信息。采用數據挖掘的方法直接從文本中挖掘實體屬性和屬性值之間的關系模式,據此實現對屬性名和屬性值在文本中的定位。

聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT