最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL數(shù)據(jù)庫(kù)之事務(wù)簡(jiǎn)析

 更新時(shí)間:2023年09月06日 08:32:07   作者:CodeRanger  
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)之事務(wù)簡(jiǎn)析,MySQL數(shù)據(jù)庫(kù)中的事務(wù)是一組數(shù)據(jù)庫(kù)操作,它們被視為一個(gè)整體,要么全部執(zhí)行成功,要么全部失敗回滾,MySQL支持四種事務(wù)隔離級(jí)別,其中默認(rèn)的事務(wù)隔離級(jí)別是REPEATABLE?READ,需要的朋友可以參考下

事務(wù)簡(jiǎn)介

事務(wù)是一組操作的集合,它是一個(gè)不可分割的工作單位,事務(wù)會(huì)把所有的操作作為一個(gè)整體一起向系統(tǒng)提交或撤銷操作請(qǐng)求,即這些操作要么同時(shí)成功,要么同時(shí)失敗。

例如一個(gè)銀行轉(zhuǎn)賬操作,張三向李四轉(zhuǎn)1000塊錢,那么第一步要判斷張三是否有1000塊,如果沒有,那么事務(wù)就會(huì)拋出異常,直接結(jié)束,后面的收款等一系列操作也宣告失敗。

操作實(shí)例

我們先創(chuàng)建一個(gè)表格,里面有人物和金額:

create table account(
    -> id int auto_increment primary key comment '主鍵ID',
    -> name varchar(10) comment '姓名',
    -> money int comment '余額'
    -> ) comment '賬戶表';

之后插入數(shù)據(jù):

insert into account(id, name, money) VALUES (null, '張三', 2000),(null, '李四', 2000);

 回憶上面的轉(zhuǎn)賬操作,先查詢張三的余額

select * from account where name ='張三';

之后將張三的錢轉(zhuǎn)給李四,注意這是兩個(gè)操作

update account set money = money - 1000 where name = '張三';
update account set money = money + 1000 where name = '李四';

執(zhí)行完上述語句后發(fā)現(xiàn),沒有問題,李四的錢自然變成3000,張三為1000。那么,我們?nèi)绻斎肓艘粋€(gè)錯(cuò)誤語句,但上面兩條轉(zhuǎn)錢的操作正確,我們知道程序會(huì)報(bào)錯(cuò)。但是,我們希望錢并沒有被轉(zhuǎn)走,而是終止這件事務(wù),但MySQL或依然執(zhí)行正確的語句,錢依然會(huì)被轉(zhuǎn)走。

解決方法一、修改提交方式

MySQL自定義的提交方式就是自動(dòng)提交(autocommit),我們只需要把自動(dòng)提交修改為手動(dòng)提交,即語法:set @@autocommit = 0;

同理,由于我們的提交方式改為手動(dòng)提交,輸入正確的語句會(huì)被執(zhí)行,但不會(huì)提交到數(shù)據(jù)庫(kù)

這時(shí)我們需要加上語句:commit。我們發(fā)現(xiàn)這樣還是不能保證出錯(cuò)時(shí)數(shù)據(jù)不變啊,這時(shí)我還需要另一個(gè)利器:

事務(wù)回滾roolback。執(zhí)行roolback語句程序就會(huì)只報(bào)錯(cuò)而不提交,保證了數(shù)據(jù)安全。

解決方法二、不改變提交方式,利用事務(wù)指令

記得將提交方式改為自動(dòng)提交。首先,執(zhí)行一個(gè)事務(wù)首先要開啟,事務(wù)的開啟指令為:           

start transaction;/begin;

之后,如果錯(cuò)誤的語句報(bào)錯(cuò)正確的語句也不會(huì)提交到數(shù)據(jù)庫(kù)修改數(shù)據(jù)。

事務(wù)的四大特性

  • 原子性((Atomicity):事務(wù)是不可分割的最小操作單元,要么全部成功,要么全部失敗。這是不是和上面的例子相同呢?
  • 一致性(Consistency)︰事務(wù)完成時(shí),必須使所有的數(shù)據(jù)都保持一致狀態(tài)。
  • 隔離性(Isolation)∶數(shù)據(jù)庫(kù)系統(tǒng)提供的隔離機(jī)制,保證事務(wù)在不受外部并發(fā)操作影響的獨(dú)立環(huán)境下運(yùn)行。
  • 持久性(Durability)∶事務(wù)一旦提交或回滾,它對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)的改變就是永久的  

并發(fā)事務(wù)問題

事務(wù)隔離級(jí)別 

事務(wù)的隔離級(jí)別就是解決上面的事務(wù)并發(fā)問題的。

 從上到下,隔離級(jí)別是越來越高的,但是數(shù)據(jù)庫(kù)的性能是越來越低的。

下面給出級(jí)別查詢的語句:

查詢事務(wù)隔離級(jí)別:

SELECT @@TRANSACTION_ISOLATION;

設(shè)置事務(wù)隔離級(jí)別:

SET[SESSION|/GLOBAL]TRANSACTION I5SOLATION LEVEL{READUNCOMMITED |READCOMMITED|REPEATABLEREAD |SERALZABLE}

到此這篇關(guān)于MySQL數(shù)據(jù)庫(kù)之事務(wù)簡(jiǎn)析的文章就介紹到這了,更多相關(guān)MySQL事務(wù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL單表ibd文件恢復(fù)方法詳解

    MySQL單表ibd文件恢復(fù)方法詳解

    隨著innodb的普及,innobackup也成為了主流備份方式。物理備份對(duì)于新建slave,全庫(kù)恢復(fù)的需求都能從容應(yīng)對(duì);但當(dāng)面臨單表數(shù)據(jù)誤刪,或者單表誤drop的情況,如果使用物理全備進(jìn)行恢復(fù)呢
    2012-11-11
  • mysql 多個(gè)字段實(shí)現(xiàn)逗號(hào)拼接

    mysql 多個(gè)字段實(shí)現(xiàn)逗號(hào)拼接

    在MySQL數(shù)據(jù)庫(kù)中,有時(shí)候我們需要將多個(gè)字段的值連接在一起,本文主要介紹了mysql 多個(gè)字段實(shí)現(xiàn)逗號(hào)拼接,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • Mysql多表操作方法講解教程

    Mysql多表操作方法講解教程

    這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)的多表操作,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)有所幫助
    2022-12-12
  • MySQL數(shù)據(jù)庫(kù)入門之備份數(shù)據(jù)庫(kù)操作詳解

    MySQL數(shù)據(jù)庫(kù)入門之備份數(shù)據(jù)庫(kù)操作詳解

    這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)入門之備份數(shù)據(jù)庫(kù)操作,結(jié)合實(shí)例形式詳細(xì)分析了MySQL備份數(shù)據(jù)庫(kù)基本操作命令與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2020-05-05
  • MYSQL IN 與 EXISTS 的優(yōu)化示例介紹

    MYSQL IN 與 EXISTS 的優(yōu)化示例介紹

    當(dāng)B表的數(shù)據(jù)集必須小于A表的數(shù)據(jù)集時(shí),用in優(yōu)于exists,當(dāng)A表的數(shù)據(jù)集系小于B表的數(shù)據(jù)集時(shí),用exists優(yōu)于in
    2014-08-08
  • MySQL內(nèi)存及虛擬內(nèi)存優(yōu)化設(shè)置參數(shù)

    MySQL內(nèi)存及虛擬內(nèi)存優(yōu)化設(shè)置參數(shù)

    這篇文章主要介紹了MySQL內(nèi)存及虛擬內(nèi)存優(yōu)化設(shè)置參數(shù),需要的朋友可以參考下
    2016-05-05
  • MySQL數(shù)據(jù)庫(kù)配置信息查看與修改方法詳解

    MySQL數(shù)據(jù)庫(kù)配置信息查看與修改方法詳解

    我們通常把在項(xiàng)目中使用的常量收集在一個(gè)文件,這個(gè)文件就是配置文件,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫(kù)配置信息查看與修改的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • MySQL之七種SQL JOINS實(shí)現(xiàn)的圖文詳解

    MySQL之七種SQL JOINS實(shí)現(xiàn)的圖文詳解

    這篇文章主要介紹了MySQL中七種SQL JOINS的實(shí)現(xiàn)方法及圖文詳解,文中也有相關(guān)的代碼示例供大家參考,感興趣的同學(xué)可以參考閱讀下
    2023-06-06
  • MySQL數(shù)據(jù)庫(kù)的InnoDB和MyISAM存儲(chǔ)引擎的區(qū)別及說明

    MySQL數(shù)據(jù)庫(kù)的InnoDB和MyISAM存儲(chǔ)引擎的區(qū)別及說明

    InnoDB是MySQL的默認(rèn)存儲(chǔ)引擎,它支持事務(wù)、外鍵和行級(jí)鎖定,具有更好的并發(fā)控制性能和崩潰恢復(fù)能力,而MyISAM不支持事務(wù)和外鍵,使用表級(jí)鎖定,適合讀操作頻繁的場(chǎng)景
    2024-12-12
  • MySQL主從架構(gòu)中的Seconds_Behind_Master指標(biāo)問題解析

    MySQL主從架構(gòu)中的Seconds_Behind_Master指標(biāo)問題解析

    Seconds_Behind_Master 是 MySQL 提供的一個(gè)延遲指標(biāo),但其計(jì)算方式?jīng)Q定了它并不能完全反映真實(shí)延遲,本文給大家介紹MySQL主從架構(gòu)中的Seconds_Behind_Master指標(biāo)問題,感興趣的朋友跟隨小編一起看看吧
    2025-09-09

最新評(píng)論

三台县| 剑川县| 南通市| 台前县| 德昌县| 丘北县| 黎川县| 湘西| 贵溪市| 社旗县| 沂源县| 沂源县| 贡嘎县| 岑溪市| 宝丰县| 长治县| 桃园县| 寿光市| 通州区| 湘乡市| 青铜峡市| 海林市| 绥江县| 扬中市| 澄江县| 乌兰察布市| 海林市| 阿拉善左旗| 云龙县| 莒南县| 紫金县| 潞西市| 分宜县| 临湘市| 唐河县| 清原| 赣榆县| 峨眉山市| 蒲城县| 甘谷县| 铅山县|