国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【MySQL事務(wù)】保證數(shù)據(jù)完整性的利器

這篇具有很好參考價(jià)值的文章主要介紹了【MySQL事務(wù)】保證數(shù)據(jù)完整性的利器。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1、事務(wù)的認(rèn)識(shí)

事務(wù):事務(wù)就是將多個(gè)SQL給打包在一起,組成一個(gè)整體。組成這個(gè)整體的各個(gè)SQL,要么全部成功,要么全部失敗。

舉例說(shuō)明:

情人節(jié)到了,滑稽老鐵打算給他女朋友小美發(fā)給紅包,但是他又害怕小美不收,于是他想到了一個(gè)辦法就是通過(guò)銀行卡進(jìn)行轉(zhuǎn)賬。他給小美轉(zhuǎn)賬了 520 元,那么滑稽老鐵的銀行卡余額就得 -520 元,小美的銀行卡余額 +520 元。這些操作就組成一個(gè)整體,就變成了事務(wù),要么執(zhí)行,要么就一個(gè)都不執(zhí)行。

【MySQL事務(wù)】保證數(shù)據(jù)完整性的利器

如果中間出錯(cuò)了,就一條都不執(zhí)行。這里的一條都不執(zhí)行,并不是真的一條都不執(zhí)行,而是自動(dòng)的恢復(fù)成執(zhí)行之前的樣子了,看起來(lái)就好像一個(gè)都沒(méi)有執(zhí)行一樣,這個(gè)操作就稱(chēng)為“回滾(rollback)”。

回滾:回滾就是把執(zhí)行過(guò)的操作逆向恢復(fù)回去,就像電腦上的 ctrl + z 操作

數(shù)據(jù)庫(kù)會(huì)把執(zhí)行的每個(gè)操作都記錄下來(lái),如果某個(gè)操作出錯(cuò)了,就會(huì)把事務(wù)中前面的操作進(jìn)行回滾,然后根據(jù)之前進(jìn)行的操作,進(jìn)行逆操作

這些操作是會(huì)有很大開(kāi)銷(xiāo)的,可以保存但不能無(wú)限保存,最多就是把正在執(zhí)行的事務(wù)保存下來(lái),額外的東西不好再保存了

2、事務(wù)的特性

2.1事務(wù)的四大特性

  • 原子性:打包成整體這個(gè)操作,就稱(chēng)為“原子性”,這個(gè)是事務(wù)最核心的特性

舉例說(shuō)明:滑稽老鐵給小美轉(zhuǎn)賬 520 元,此時(shí)滑稽老鐵余額 - 520 元,小美余額 +520,此時(shí)把轉(zhuǎn)賬、滑稽老鐵余額 - 520 元,小美余額 +520元 打包成一個(gè)整體,要么都執(zhí)行,要么一個(gè)都不執(zhí)行,這就具有了原子性。

  • 一致性:事務(wù)執(zhí)行前/執(zhí)行后,都得是數(shù)據(jù)合法的狀態(tài)

舉例說(shuō)明:滑稽老鐵給小美轉(zhuǎn)賬520元,如果轉(zhuǎn)賬成功滑稽老鐵余額-520元,小美余額+520元。如果轉(zhuǎn)賬失敗滑稽老鐵余額不扣錢(qián),小美余額也不加錢(qián)。

注:一致性是根據(jù)原子性而來(lái)的,要么全部執(zhí)行,要么都不執(zhí)行

  • 持久性:事務(wù)產(chǎn)生的修改,都會(huì)寫(xiě)入硬盤(pán)

舉例說(shuō)明:滑稽老鐵給小美轉(zhuǎn)賬 520 元,轉(zhuǎn)賬成功滑稽老鐵余額-520元,小美余額+520元,這個(gè)是持久的,不會(huì)改變的。

  • 隔離性:一個(gè)數(shù)據(jù)庫(kù)服務(wù)器,同時(shí)執(zhí)行多個(gè)事務(wù)的時(shí)候,事務(wù)之間的“相互影響程度”

舉例說(shuō)明:當(dāng)多個(gè)事務(wù)同時(shí)執(zhí)行的時(shí)候,一個(gè)事務(wù)的執(zhí)行是否會(huì)干擾到其他事務(wù),這就是事務(wù)的隔離性

2.2 隔離性的重點(diǎn)說(shuō)明

MySQL 服務(wù)器,是要同時(shí)給多個(gè)客戶(hù)端提供服務(wù),此時(shí)多個(gè)客戶(hù)端之間就可能會(huì)同時(shí)發(fā)生事務(wù),尤其是這多個(gè)事務(wù)在操作同一個(gè)數(shù)據(jù)庫(kù)的同一個(gè)表的時(shí)候,就可能引起一些麻煩

  • 如果隔離性越高,也就意味著事務(wù)之間的并發(fā)程度越低,執(zhí)行效率越慢,但數(shù)據(jù)的準(zhǔn)確性越高

  • 如果隔離性越低,也就意味著事務(wù)之間的并發(fā)程度越高,執(zhí)行效率越快,但數(shù)據(jù)的準(zhǔn)確性越低

2.3 事務(wù)同時(shí)執(zhí)行會(huì)出現(xiàn)的問(wèn)題

2.3.1 臟讀

臟讀:當(dāng)事務(wù)A在寫(xiě)數(shù)據(jù)的時(shí)候,事務(wù)B讀取事務(wù)A寫(xiě)的數(shù)據(jù),事務(wù)B 讀完后,事務(wù)A改了數(shù)據(jù),那么此刻事務(wù)B讀到的數(shù)據(jù)就是錯(cuò)誤的數(shù)據(jù),這就稱(chēng)為“臟讀”問(wèn)題。

舉例說(shuō)明:張三和李四是同桌,有一次老師布置課堂作業(yè)的時(shí)候,李四第二題不會(huì)寫(xiě),于是李四就偷偷的看了一眼張三寫(xiě)的,看到張三第二題選了A,

在這個(gè)場(chǎng)景下,滑稽老鐵和小美這兩個(gè)事務(wù)是完全并發(fā)的沒(méi)有任何限制,在這個(gè)前提下就會(huì)出現(xiàn)臟讀問(wèn)題

問(wèn)題:如何解決臟讀問(wèn)題?

答:解決臟讀問(wèn)題就是降低并發(fā)性、提高隔離性,可以給這里的 "寫(xiě)操作" 進(jìn)行加鎖

加鎖:當(dāng)進(jìn)行了寫(xiě)加鎖,滑稽老鐵在制定表白計(jì)劃表的期間,別人就不能同時(shí)去讀了。相當(dāng)于降低了并發(fā)程度,提高了隔離性,降低了一定的效率,但是提高了準(zhǔn)備性

2.3.1 臟讀

臟讀:當(dāng)事務(wù)A在寫(xiě)數(shù)據(jù)的時(shí)候,事務(wù)B讀取事務(wù)A寫(xiě)的數(shù)據(jù),事務(wù)B 讀完后,事務(wù)A改了數(shù)據(jù),那么此刻事務(wù)B讀到的數(shù)據(jù)就是錯(cuò)誤的數(shù)據(jù),這就稱(chēng)為“臟讀”問(wèn)題。

舉例說(shuō)明:張三在寫(xiě)作業(yè),作業(yè)內(nèi)容 123+32 = 15.. 當(dāng)張三寫(xiě)完 15 之后,李四跑過(guò)來(lái)瞄了一眼張三的答案:123+32=15,于是李四就把這個(gè)答案抄到自己的作業(yè)本上了,但是實(shí)際上張三要寫(xiě)的是 123+32 = 155,但是李四讀到了一個(gè)張三還沒(méi)寫(xiě)完的答案,也就導(dǎo)致李四讀到了一個(gè)錯(cuò)誤的數(shù)據(jù),這就是臟讀問(wèn)題

如何解決臟讀問(wèn)題呢?

答:降低并發(fā)性、提高隔離性,也就是給“寫(xiě)操作”加鎖

加鎖可以分為:寫(xiě)加鎖和讀加鎖

寫(xiě)加鎖:寫(xiě)的時(shí)候,別人不能進(jìn)行讀

讀加鎖:讀的時(shí)候,別人不能進(jìn)行寫(xiě)

2.3.2 不可重復(fù)讀

不可重復(fù)讀:事務(wù)B 在讀的時(shí)候,事務(wù)A改了數(shù)據(jù),此刻事務(wù)B連續(xù)兩次讀到的數(shù)據(jù)結(jié)果不一樣

舉例說(shuō)明:張三在寫(xiě)作業(yè)的時(shí)候,發(fā)生李四一直在瞄。張三感覺(jué)李四有點(diǎn)影響到他了,于是就跟李四約定,等張三寫(xiě)完了再給李四瞄。過(guò)了一會(huì)張三寫(xiě)完了,李四就開(kāi)始瞄了,當(dāng)李四正在瞄的時(shí)候,張三發(fā)現(xiàn)自己有個(gè)地方錯(cuò)了,就李四等一會(huì)再瞄,自己先改一下,這就導(dǎo)致李四之前瞄到的數(shù)據(jù)和現(xiàn)在瞄到的數(shù)據(jù)可能不一樣

如何解決不可重復(fù)讀呢?

答:給讀加鎖,讓李四讀的時(shí)候,張三不能修改。

這兩個(gè)事務(wù)之間的并發(fā)程度進(jìn)一步降低了,隔離性又進(jìn)一步提高了,運(yùn)算速度又進(jìn)一步變慢了,數(shù)據(jù)的準(zhǔn)確性又進(jìn)一步提高了

2.3.3 幻讀

幻讀:事務(wù)A寫(xiě)的時(shí)候,事務(wù)B不能讀;事務(wù)B讀的時(shí)候,事務(wù)A不能寫(xiě)。雖然事務(wù)A不能寫(xiě),但是事務(wù)A可以新增和刪除一個(gè)其他的文件,此刻事務(wù)B 兩次讀到的結(jié)果集就不同了

李四正在瞄的時(shí)候,張三讓他等一下在喵,自己先改一下。李四感覺(jué)自己正在瞄的時(shí)候,張三總是打斷自己,于是就跟張三商量說(shuō),你寫(xiě)的時(shí)候我不去瞄,我瞄的時(shí)候你也不能讓我等一下你去改。于是張三就跟李四約定好了,張三寫(xiě)的時(shí)候李四不能讀,李四讀的時(shí)候張三不能寫(xiě)。李四在瞄的時(shí)候,張三沒(méi)事干,張三就看哪里寫(xiě)錯(cuò)了,發(fā)現(xiàn)寫(xiě)錯(cuò)了自己又不能在李四讀的時(shí)候去改,然后就把正確答案寫(xiě)到另一種本子上,寫(xiě)完后把正確答案在拿出來(lái),李四一看怎么又多了本子,這就是幻讀問(wèn)題

如何解決幻讀問(wèn)題?

答:串行化,徹底的舍棄并發(fā)。就是當(dāng)事務(wù)B讀的時(shí)候,事務(wù)A什么都不能干

3、MySQL提供的隔離級(jí)別

MySQL 為了解決并發(fā)執(zhí)行帶來(lái)的問(wèn)題,提供了四個(gè)隔離級(jí)別

  • read uncommitted:不做任何限制,事務(wù)之間都是隨意并發(fā)執(zhí)行的。并發(fā)程度最高,隔離性最低。會(huì)產(chǎn)生: 臟讀+不可重復(fù)讀+幻讀

  • read committed:對(duì)寫(xiě)操作加鎖,并發(fā)程度降低了,隔離性提高了。解決了臟讀問(wèn)題,但仍然存在:不可重復(fù)讀+幻讀

  • repeatable read:對(duì)寫(xiě)和讀都加鎖了,并發(fā)程度又降低了,隔離性又提高了。解決了臟讀和不可重復(fù)讀問(wèn)題,但可能存在:幻讀

  • serializable:嚴(yán)格串行化,并發(fā)程度最低,隔離性最高。解決了臟讀+不可重復(fù)讀+幻讀問(wèn)題,但執(zhí)行速度最慢文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-480731.html

到了這里,關(guān)于【MySQL事務(wù)】保證數(shù)據(jù)完整性的利器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【MySQL】數(shù)據(jù)庫(kù)完整性和安全性

    【MySQL】數(shù)據(jù)庫(kù)完整性和安全性

    目錄 ? 一、完整性 1.概念 2.sql語(yǔ)言支持的兩種約束 ? ??2.1靜態(tài)約束 ? ? ? ? ?撤銷(xiāo)追加約束 ? ? ? ? ?斷言 ? ??2.3動(dòng)態(tài)約束 ? ? ? ? ??觸發(fā)器 二、安全性 用DBMS對(duì)數(shù)據(jù)庫(kù)實(shí)現(xiàn)的兩個(gè)特性? 1.概念 指dbms保證的db的一種特性,在任何情況下的正確性、有效性、一致性 原理圖

    2023年04月24日
    瀏覽(30)
  • 軟件測(cè)試|MySQL主鍵約束詳解:保障數(shù)據(jù)完整性與性能優(yōu)化

    軟件測(cè)試|MySQL主鍵約束詳解:保障數(shù)據(jù)完整性與性能優(yōu)化

    簡(jiǎn)介 主鍵(PRIMARY KEY)的完整稱(chēng)呼是“主鍵約束”,是 MySQL 中使用最為頻繁的約束。一般情況下,為了便于 DBMS 更快的查找到表中的記錄,都會(huì)在表中設(shè)置一個(gè)主鍵。 MySQL是一種廣泛使用的開(kāi)源關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),其支持多種數(shù)據(jù)約束,其中主鍵約束是其中最重要的之一

    2024年02月02日
    瀏覽(24)
  • Mysql列的完整性約束(調(diào)整列的完整性約束)

    目錄 一、?主鍵PK、外鍵FK和 唯一鍵UK 新增 刪除???????? 修改 ????????修改默認(rèn)值DEFAULT、自增長(zhǎng)和非空NK 總結(jié) alter table [table_name] add constraint [constraint_name] [unique key| primary key|foreign key] ([column_name]) ????????1.通過(guò)如下命令查詢(xún)鍵值的約束名: ????????????????

    2024年02月01日
    瀏覽(25)
  • 軟件測(cè)試/測(cè)試開(kāi)發(fā)/全日制|MySQL主鍵約束詳解:保障數(shù)據(jù)完整性與性能優(yōu)化

    軟件測(cè)試/測(cè)試開(kāi)發(fā)/全日制|MySQL主鍵約束詳解:保障數(shù)據(jù)完整性與性能優(yōu)化

    簡(jiǎn)介 主鍵(PRIMARY KEY)的完整稱(chēng)呼是“主鍵約束”,是 MySQL 中使用最為頻繁的約束。一般情況下,為了便于 DBMS 更快的查找到表中的記錄,都會(huì)在表中設(shè)置一個(gè)主鍵。 MySQL是一種廣泛使用的開(kāi)源關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),其支持多種數(shù)據(jù)約束,其中主鍵約束是其中最重要的之一

    2024年02月19日
    瀏覽(61)
  • 二級(jí)MySQL(四)——完整性約束

    二級(jí)MySQL(四)——完整性約束

    一種規(guī)則,限制存儲(chǔ)的數(shù)據(jù) 保證數(shù)據(jù)庫(kù)中數(shù)據(jù)的正確,有效和完整 分類(lèi): 非空——得有值——NOT NULL 唯一——唯一的,不重復(fù)——UNIQUE 主鍵——非空且唯一——PRIMARY KEY 默認(rèn)——給出默認(rèn)值——DEFAULT 檢查——保證某個(gè)條件——CHECK 外鍵——兩張表的連接——FOREIGN KEY 主鍵

    2024年02月11日
    瀏覽(21)
  • MySQL開(kāi)發(fā)技巧——查詢(xún)、索引和完整性

    MySQL開(kāi)發(fā)技巧——查詢(xún)、索引和完整性

    ?目錄 第1關(guān) 基本查詢(xún)的學(xué)習(xí) 查詢(xún)語(yǔ)句SELECT 頭歌實(shí)驗(yàn) 查詢(xún)語(yǔ)句SELECT 第2關(guān) 深入學(xué)習(xí)查詢(xún)語(yǔ)句 MySQL聚集函數(shù) 頭歌實(shí)驗(yàn) MySQL聚集函數(shù) 第3關(guān) 視圖的創(chuàng)建和使用 查看數(shù)據(jù)庫(kù)中表的情況: 頭歌實(shí)驗(yàn) 第4關(guān) 索引和完整性 索引 頭歌實(shí)驗(yàn) 索引 數(shù)據(jù)完整性 域完整性 實(shí)體完整性 參照完整

    2024年02月08日
    瀏覽(19)
  • Mysql列的完整性約束最詳細(xì)教程之一——詳解

    Mysql列的完整性約束最詳細(xì)教程之一——詳解

    目錄 前言 一、主鍵約束 1.設(shè)置字段的主鍵約束(PRIMARY KEY,PK) 1.單字段主鍵 2.多字段主鍵 二、設(shè)置表字段的外鍵約束 1.簡(jiǎn)介 2.語(yǔ)句格式 三、設(shè)置表字段的非空約束(NOT NULL, NK) 1.簡(jiǎn)介 2.語(yǔ)句格式 四、設(shè)置字段值自動(dòng)增加(AUTO_INCREMENT) ?1.語(yǔ)句格式 ? 2.實(shí)際應(yīng)用 五、設(shè)置

    2024年02月04日
    瀏覽(27)
  • 數(shù)據(jù)安全—數(shù)據(jù)完整性校驗(yàn)

    數(shù)據(jù)安全—數(shù)據(jù)完整性校驗(yàn)

    1、數(shù)據(jù)安全保障三要素即 保密性 完整性、可用性 機(jī)密性:要求數(shù)據(jù)不被他人輕易獲取,需要進(jìn)行數(shù)據(jù)加密。 完整性:要求數(shù)據(jù)不被他人隨意修改,需要進(jìn)行簽名技術(shù) 可用性:要求服務(wù)不被他人惡意攻擊,需要進(jìn)行數(shù)據(jù)校驗(yàn) 2、為保證數(shù)據(jù)完整性如下圖所示 1)將要提交的參

    2024年02月09日
    瀏覽(21)
  • 2.4數(shù)據(jù)完整性驗(yàn)證

    2.4數(shù)據(jù)完整性驗(yàn)證

    1.數(shù)據(jù)完整性概述 數(shù)據(jù)完整性指數(shù)據(jù)不會(huì)被非授權(quán)更改或破壞,如篡改、刪除、插入等 主要類(lèi)型:帶恢復(fù)的連接完整性、不帶恢復(fù)的連接完整性、選擇字段連接完整性、無(wú)連接完整性、選擇字段無(wú)連接完整性 主要實(shí)現(xiàn)技術(shù):基于密碼技術(shù)的完整性保護(hù)和基于非密碼技術(shù)的完

    2024年02月08日
    瀏覽(30)
  • 數(shù)據(jù)庫(kù)系統(tǒng)概論—安全、完整性

    數(shù)據(jù)庫(kù)的安全性指保護(hù)數(shù)據(jù)庫(kù)以防 不合法 使用所造成的數(shù)據(jù)泄露、更改或破壞 2.1用戶(hù)身份鑒別 靜態(tài)口令鑒別 動(dòng)態(tài)口令鑒別 生物鑒別特征 智能卡鑒別 2.2存取控制 自主存取控制:給用戶(hù)限權(quán)(DAC,C1級(jí)) 強(qiáng)制存取控制:給數(shù)據(jù)庫(kù)對(duì)象一定的密級(jí)(MAC,B1級(jí)) 2.3自主存取控制方法(授

    2024年02月03日
    瀏覽(23)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包