婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識(shí)庫 > MySQL對(duì)于各種鎖的概念理解

MySQL對(duì)于各種鎖的概念理解

熱門標(biāo)簽:寶應(yīng)電信400電話辦理費(fèi)用 高德地圖標(biāo)注模式 高德地圖標(biāo)注中心個(gè)人注冊(cè) 外呼系統(tǒng)防封號(hào)違法嗎 湘潭電銷機(jī)器人咨詢電話 電銷機(jī)器人針對(duì)的 如何在高德地圖標(biāo)注新地址 外呼系統(tǒng)服務(wù) 400電話辦理都選易號(hào)網(wǎng)

樂觀鎖

樂觀鎖大多是基于數(shù)據(jù)版本記錄機(jī)制實(shí)現(xiàn),一般是給數(shù)據(jù)庫表增加一個(gè)"version"字段。讀取數(shù)據(jù)時(shí),將此版本號(hào)一同讀出,之后更新時(shí),對(duì)此版本號(hào)加一。此時(shí)將提交數(shù)據(jù)的版本數(shù)據(jù)與數(shù)據(jù)庫表對(duì)應(yīng)記錄的當(dāng)前版本信息進(jìn)行比對(duì),如果提交的數(shù)據(jù)版本號(hào)大于數(shù)據(jù)庫表當(dāng)前版本號(hào),則予以更新,否則認(rèn)為是過期數(shù)據(jù)。

比如下單操作:

查詢出商品信息。

select (quantity, version)
from t_goods
where id = #{id}

根據(jù)商品信息生成訂單。

將商品數(shù)量減1。

update t_goods
set quantity = quantity - 1
where id = #{id} and version = #{version}

悲觀鎖

悲觀鎖依靠數(shù)據(jù)庫提供的鎖機(jī)制實(shí)現(xiàn)。MySQL中的共享鎖和排它鎖都是悲觀鎖。數(shù)據(jù)庫的增刪改操作默認(rèn)都會(huì)加排他鎖,而查詢不會(huì)加任何鎖。

共享鎖(讀鎖)

共享鎖指的就是對(duì)于多個(gè)不同的事務(wù),對(duì)于一個(gè)資源共享同一個(gè)鎖。對(duì)某一資源加共享鎖,自身可可讀該資源,其他人也可以讀該資源(也可以再加共享鎖,即共享鎖共享多個(gè)內(nèi)存),但無法修改。要想修改就必須等所有共享鎖都釋放完之后。語法:select * from table lock in share mode;

比如:

窗口1,在一個(gè)未結(jié)束的事務(wù)中給一條數(shù)據(jù)加上共享鎖。

BEGIN;
SELECT * FROM t_red_packet WHERE id = 1 LOCK IN SHARE MODE;

窗口2,給同一條數(shù)據(jù)加上共享鎖,加鎖成功。

SELECT * FROM t_red_packet WHERE id = 1 LOCK IN SHARE MODE;

窗口1和窗口2,更新該行數(shù)據(jù),提示[Err] 1205 - Lock wait timeout exceeded; try restarting transaction。需要等到所有共享鎖釋放,才可以進(jìn)行update操作。

UPDATE t_red_packet
SET user_id = 2

排它鎖(寫鎖)

排它鎖指的就是對(duì)于多個(gè)不同的事務(wù),對(duì)同一個(gè)資源只能有一把鎖。對(duì)某一資源加排它鎖,自身可以進(jìn)行增刪改查,其他人無法進(jìn)行加鎖操作,更無法進(jìn)行增刪改操作。語法:select * from table for update

窗口1,在一個(gè)未結(jié)束的事務(wù)中給一條數(shù)據(jù)加上排它鎖。

BEGIN;
SELECT * FROM t_red_packet WHERE id = 1 FOR UPDATE;

窗口1,更新該行數(shù)據(jù),成功。

UPDATE t_red_packet
SET user_id = 2

窗口2,查詢?cè)撔袛?shù)據(jù),可以查詢到。

SELECT * FROM t_red_packet WHERE id = 1

窗口2給該條數(shù)據(jù)加鎖,提示[Err] 1205 - Lock wait timeout exceeded; try restarting transaction

SELECT * FROM t_red_packet WHERE id = 1 FOR UPDATE;

綜上,共享鎖就是大家一起來讀,一起來共享鎖,但誰都不要對(duì)鎖著的數(shù)據(jù)進(jìn)行修改,排它鎖就是我自己就是想來修改,你們可以讀,但你們都不能到鎖,也不能對(duì)數(shù)據(jù)進(jìn)行修改。

行鎖

行鎖就是給一行數(shù)據(jù)進(jìn)行加鎖。

表鎖

表鎖就是對(duì)一張表進(jìn)行加鎖。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

您可能感興趣的文章:
  • Mysql查詢正在執(zhí)行的事務(wù)以及等待鎖的操作方式
  • 基于更新SQL語句理解MySQL鎖定詳解
  • PHP利用Mysql鎖解決高并發(fā)的方法
  • PHP+MySQL高并發(fā)加鎖事務(wù)處理問題解決方法
  • MySQL鎖機(jī)制與用法分析
  • MySQL如何查看元數(shù)據(jù)鎖阻塞在哪里
  • MySQL語句加鎖的實(shí)現(xiàn)分析
  • Mysql使用kill命令解決死鎖問題(殺死某條正在執(zhí)行的sql語句)
  • MYSQL 解鎖與鎖表介紹
  • 一次Mysql死鎖排查過程的全紀(jì)錄

標(biāo)簽:佛山 黔南 賀州 宿遷 黃山 馬鞍山 南充 蘭州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL對(duì)于各種鎖的概念理解》,本文關(guān)鍵詞  MySQL,對(duì)于,各種,鎖,的,概念,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySQL對(duì)于各種鎖的概念理解》相關(guān)的同類信息!
  • 本頁收集關(guān)于MySQL對(duì)于各種鎖的概念理解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 萨迦县| 沂南县| 赤城县| 博乐市| 镇赉县| 仁怀市| 瓮安县| 胶南市| 鄂托克旗| 潮安县| 泰宁县| 都昌县| 巩义市| 赫章县| 新绛县| 正蓝旗| 兴化市| 商城县| 波密县| 什邡市| 长泰县| 九江市| 青神县| 太白县| 长治县| 鄱阳县| 洪湖市| 绿春县| 太白县| 堆龙德庆县| 瑞金市| 景洪市| 财经| 汶上县| 津南区| 新巴尔虎右旗| 宁波市| 呼和浩特市| 安溪县| 大同县| 寿阳县|