亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長(zhǎng)資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    關(guān)于數(shù)據(jù)庫(kù)事務(wù)處理的一些問(wèn)題總結(jié)

    關(guān)于mysql事務(wù)處理的一些總結(jié):

    1、什么是事務(wù)?

    MySQL 事務(wù)主要用于處理操作量大,復(fù)雜度高的數(shù)據(jù)。

    比如說(shuō),在人員管理系統(tǒng)中,你刪除一個(gè)人員,你即需要?jiǎng)h除人員的基本資料,也要?jiǎng)h除和該人員相關(guān)的信息,

    如信箱,文章等等,這樣,這些數(shù)據(jù)庫(kù)操作語(yǔ)句就構(gòu)成一個(gè)事務(wù)!

    2、事務(wù)使用的條件

    MySQL要使用事務(wù),需要MySQL中的存儲(chǔ)引擎支持.現(xiàn)目前MySQL內(nèi)置的存儲(chǔ)引擎支持事務(wù)的有InnoDB、NDB cluster,

    第三方的存儲(chǔ)引擎有PBXTXtrDB.

    3、事務(wù)有什么特點(diǎn)

    3-1、原子性

    一個(gè)事務(wù)必須被作為一個(gè)不可分割的最小工作單元,每個(gè)事務(wù)中的所有操作必須要么成功,或者要么失敗,

    永遠(yuǎn)不可能一些操作失敗,一些操作成功,這就是所謂的原子性的概念.

    3-2、一致性

    一致性就像上面舉的一個(gè)例子一樣,當(dāng)發(fā)生異常情況下,數(shù)據(jù)仍然是正確的.就是說(shuō)當(dāng)一個(gè)事務(wù)執(zhí)行失敗了,

    數(shù)據(jù)之間是不會(huì)受異常的情況而影響,永遠(yuǎn)保持著他的正確性.

    3-3、隔離性

    當(dāng)一個(gè)事務(wù)還未提交,每個(gè)事務(wù)之間是相互隔離的,互不受到影響.

    3-4、持久性

    當(dāng)一個(gè)事務(wù)進(jìn)行提交之后,發(fā)生的變化就會(huì)永遠(yuǎn)保存在數(shù)據(jù)庫(kù)中.

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

    4-1、未提交讀

    一個(gè)事務(wù)中對(duì)數(shù)據(jù)所做的修改,即使沒(méi)有提交,這個(gè)修改對(duì)其他的事務(wù)仍是可見(jiàn)的,這種情況下就容易出現(xiàn)臟讀,影響了數(shù)據(jù)的完整性.

    4-2、讀提交

    一個(gè)事務(wù)開(kāi)始時(shí),只能看見(jiàn)其他已經(jīng)提交過(guò)的事務(wù).這種情況下容易出現(xiàn)不可重復(fù)讀(兩次讀的結(jié)果不一樣).

    4-3、可重復(fù)讀

    多次讀取記錄的結(jié)果都是一致的,可重復(fù)讀可以解決上面的不可重復(fù)讀的情況.但是有這樣一種情況,

    當(dāng)一個(gè)事務(wù)在讀取某個(gè)范圍的記錄時(shí),另外一個(gè)事務(wù)在這個(gè)范圍內(nèi)插入了一條新的數(shù)據(jù),當(dāng)事務(wù)再次進(jìn)行讀取數(shù)據(jù)時(shí),

    發(fā)現(xiàn)比第一次讀取記錄多了一條,這就是所謂的幻讀,兩次讀取的結(jié)果不一致.

    4-4、可串行

    串行就像一個(gè)隊(duì)列一個(gè)樣,每個(gè)事務(wù)都是排隊(duì)等候著執(zhí)行,只有前一個(gè)事務(wù)提交之后,下一個(gè)事務(wù)才能進(jìn)行操作.

    這種情況雖然可以解決上面的幻讀,但是他會(huì)在每一條數(shù)據(jù)上加一個(gè)鎖,容易導(dǎo)致大量的鎖超時(shí)和鎖競(jìng)爭(zhēng),

    特別不適用在一些高并發(fā)的業(yè)務(wù)場(chǎng)景下.

    4-5、隔離性總結(jié)

    通過(guò)上面的舉例,我們不難發(fā)現(xiàn).臟讀和不可重復(fù)讀重在更新數(shù)據(jù),然后幻讀重在插入數(shù)據(jù).

    5、多種存儲(chǔ)引擎時(shí)事務(wù)的處理方式

    根據(jù)上面事務(wù)使用的條件,我們可以得知有的存儲(chǔ)引擎是不支持事務(wù)的,例如MyISAM存儲(chǔ)引擎就不支持.

    那如果在一個(gè)事務(wù)中使用了事務(wù)性的存儲(chǔ)引擎和非事務(wù)性的存儲(chǔ),提交是可以正常進(jìn)行,

    但是回滾非事務(wù)性的存儲(chǔ)引擎則會(huì)顯示響應(yīng)的錯(cuò)誤信息,具體信息和存儲(chǔ)引擎有關(guān).

    6、如何使用事務(wù)

    MySQL中事務(wù)隱式開(kāi)啟的,也就是說(shuō),一個(gè)sql語(yǔ)句就是一個(gè)事務(wù),當(dāng)sql語(yǔ)句執(zhí)行完畢,事務(wù)就提交了.在演示的過(guò)程中,我們顯式開(kāi)啟.

    7、mysql的自動(dòng)提交

    上面提到了MySQL中事務(wù)是隱式開(kāi)啟的,則代表我們每一個(gè)sql是自動(dòng)提交的,需要關(guān)閉則需要設(shè)置autocommit選項(xiàng).

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

    set session transaction isolation level 隔離級(jí)別;

    以上是為大家準(zhǔn)備的關(guān)于數(shù)據(jù)庫(kù)事務(wù)處理的一些相關(guān)問(wèn)題,

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)