關於數據庫事務的隔離級別

根本上講,隔離級別的選擇,其實是對“一致性”的破壞程度。讀本文前,請務必充分理解“一致性”和“隔離性”。
皚:ai音,二聲。

老師:今天我們來講講數據庫事務的隔離級別。……(一堆廢話)
學生:……(也說了一堆廢話,作爲迴應)
老師:……(也迴應一堆廢話,然後又說了一堆廢話),只要存在並行操作,那“一致性”一定會受到破壞,思考一下。原因很簡單,一山不容二虎,我們一羣人同時操作同一個數據庫,不亂纔怪……(被打斷)
機敏同學:那如果是並行的“查”呢?也有句話叫,“除非一公一母啊”。
學生:……
老師:這個問題好,如果是並行的查,那當我那句話是廢話好了。
學生:……
老師:(着急臉)你這是赤果果的較真行爲啊。同學們,什麼事兒都不要太較真兒啊,就像,,,,,我是一個人,我是人嗎?好像是,這沒錯,但是你細細想想,我真的是人嗎,我看到有的同學今天沒來上課,他們會怎麼想?這個老師真不是人,不上課還要被點名。皚,你不覺得他說的很有道理嗎?注意哈,他說我不是人,不是沒有理由的,是因爲我點了他的名,我使他不開心,也就是我對他做了一件不人性化的事,那我在這件事上失去了人性,那我還是人嗎?有的同學可能會爲我辯護:是他逃課在先啊。但是你仔細想想,他逃不逃課,跟我是不是人,沒有什麼必然的聯繫。我點名能使時光倒流,然後他來上課嗎?顯然不能,所以,其實我是在一件不可挽回的事發生之後,做了另一件事,而這件事,不人性。
較真同學:但是……(被打斷)
老師:閉嘴。
單純同學:但是機敏同學說的沒錯啊。
老師:沒錯,其實機敏同學說得很對,但是我說的,也不錯。正所謂,較真出真知。今天的課就建立在較真與不較真的觀點上進行。當然,首先你得不較真,……(被打斷)
較真同學:但是……(被打斷)
老師:閉嘴。對於“並行會破壞一致性”這個觀點,大家都不要較真。較真的地方在於“並行會破壞一致性”。
學生:……
老師:(不屑臉)哼,一羣s b。總之呢,別較真。只要有並行,一致性肯定遭到破壞,所以,爲了保證絕對的一致性,我們只能讓所有事務串行進行,也就是說,只能有一個事務處於運行態,其他後來的事務全部堵塞。這就是數據庫事務的最高的隔離級別“串行執行”。 好了,下面我們來較較真。
學生:……
老師:(繼續不屑臉)正如機敏同學所說,要是全是“查”,就不用隔離了啊。現實生活中,這種事情可能發生嗎?(敲桌子,嚴肅臉)
單純同學和一些學生:不……可……能……
老師:(陰險臉)當然可能啊。
單純同學:(委屈臉)
老師:別較真哈,好了好了,這種情況真的可能發生哈,比如歷史資料,皚,別哭啊,,,,皚,咳咳,咳咳,不會改動吧。……(被打斷)
較真同學:有時候歷史資料記載的不對,後人會有修改啊,比如日本的靖……(被打斷)
老師:閉嘴。所以呢,不能全部的事務都串行進行,而且全串行進行的話,皚,別哭了,別哭了,咳咳,效率得多低啊。像那些只有“查”的操作,我們就給他一個最低的隔離級別,也就是“不隔離”級別
學生:……
老師:好了,總共四個級別,我們已經講了兩個,“串行執行”也就是完全隔離;“不隔離”也就是,,,,不隔離(作者語:其實我目前不知道是不是完全不隔離,還請高人賜教)。當然還有兩個級別。我們下節課再講。(突然嚴肅)別哭了!(淡定臉)下課。

(因爲上課的時候有很多廢話,被我省略了,所以看起來一節課很短,但事實上很漫長)
(第二節課)
(很多學校每大節都有兩小節嘛)
老師:好了,上課,,,,,(小聲)好了別哭了別哭了,你看眼線都花了,,,,,,好了,我們上課。(驚堂木)上回說到,潘金……皚,em……隔離級別的最高級別“串行”和最低級別“不隔離”,今天我們來說說,其他的,兩個級別(驚堂木)。
學生:yu……yi……
老師:謝謝,謝謝。來就來了,怎麼沒人送花呢。
學生:……
老師:來,繼續我們的較真。(os:終於tm不哭了)上回說到,絕對的一致性必須要“串行”,而當所有業務裏,都只有“查”沒別的操作的時候,就不用隔離了,他們中間有沒有什麼其他的級別呢?
學生:(os:廢話)
老師:當然有啦,哈哈,比如我們把最高級別的“串行”,放寬一點政策。我們讓它這樣,當有別的事務未完成時,其他的“只有查詢操作”的事務可以進來並行執行,皚,增刪改是不允許的。這樣,效率明顯就高了點吧,但是會有什麼問題呢?想一下。
學生:……
老師:好了,我們把這種級別叫做“查詢可串行”。名字有點長哈,不要緊,反正我已經記住了。下面我們來說說可能造成的後果哈。比如我在銀行櫃檯取錢,先查查有多少錢,打開一個事務,皚,一看,只剩3個億了,……
學生:yi……yu……
老師:那我很傷心啊,我當時就決定要跟校長說,我沒錢了,漲工資!那我得有證據啊,讓櫃檯裏的小妹妹給我打印個憑證,讓校長看看。然後小妹妹就給我打印了啊,皚,說時遲那時快,就在她剛打還沒打的時候,,,,,,,我大哥,就是那誰,你們都認識,我馬哥。他那邊也開了一個事務,給我打了10個億,提交。然後呢,小妹妹打印憑證的時候,一查,眼都沒看一下,就給我打印了。我一看就火了,怎麼賬戶裏有15億了呢,我用腳也能想到這事兒是老馬乾的啊,這老馬,怎麼這麼煩人,就是不讓我漲工資啊,賊tm煩。
學生:……
老師:皚,這就是“查詢可串行”級別,也就是說,增刪改還是要串行,但是查詢這種破壞力不大的行爲,是可以並行走的。大家可以把他記成是“串行”的寬鬆政策。
學生:……
老師:那最後還有一個級別,是對“不隔離”的強化,叫“讀取的都是提交的”,皚,名字更長,不過我也已經記住了,,,,,,,,,,好累啊,不想講了,自己理解去吧。下課!

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章