作為程式猿我們都應該清楚,不管是在求職面試的過程中還是在平常的開發中,資料庫起了很重要的作用,資料庫又分為關係型資料庫和非關係型資料庫。接下來將會介紹一些資料庫方面的基礎知識。
提起資料庫我們想到的就是我們常常編寫的一些sql語句,那這些sql語句在執行的過程中,怎麼執行的,什麼時候結束,這時候邊涉及到乙個名詞——事務。事務通俗地講就是表示的是一系列命令的集合,它是併發控制的基本單元。事務具有四大特性:原子性,一致性,隔離性,永續性。
原子性:是指事務中的一系列操作要麼全部執行完畢,要麼全部都不執行(即命令中有一條沒有執行,全部回滾)
一致性:是指資料庫的資料在進行一系列的操作之後,資料內容應該是由原來的一致性狀態變為另乙個一致性的狀態。
隔離性:即多個事務之間在執行的時候是互不干擾的。
永續性:即一旦乙個事務對資料庫進行操作後,這個事務對資料庫的影響將是持久的。
在這四種特性中,隔離性的保證是靠鎖機制實現的,另外三種特性則是依靠資料庫的特性實現的。
說到事務,就不得不說事務的四大隔離級別:讀未提交,讀已提交,可重複度,序列化,這四種隔離級別都是在解決一些問題時出現的。
讀未提交:即在事務執行過程中,事務中的一些執行指令改變了資料庫的值,但是該事務卻沒有提交,並且由於某種原因該事務回滾,而在回滾之前,另乙個事務也對資料庫的統一資料進行了讀操作,即前一事務的修改被後一事務讀取到,而由於前一事務的回滾操作,導致後一事務的讀取是錯誤的,這就會導致的髒讀問題的出現。當然了除了髒讀,不可重複讀和幻讀都是不可避免的。
讀已提交:即事務只有在提交之後,該事務所影響的資料才能被其他事務讀取。這樣便可以避免髒讀問題的產生,但是避免不了不可重複讀和幻讀問題的出現。
可重複讀:在該種隔離級別下,事務可以重複讀取不同版本的資料,而不會出現讀取到的資料不一致的情況。但是避免不了幻讀的產生。
序列化:是指多個事務在執行的時候,需按照一定的次序執行,這樣可以嚴格的控制事務之間執行的次序,從而可以避免幻讀的出現。但是效率低下。
至此,資料庫的事務知識介紹結束,下章會介紹資料庫的儲存引擎的相關知識。
初解資料庫 儲存引擎
資料的基本知識說完之後,下面會介紹一些資料庫的儲存引擎,儲存引擎是資料庫的核心部分,資料庫常見的儲存引擎包括 innodb,myisam,memory。myisam 該儲存引擎是不支援事務的,也不支援外來鍵,由於不支援事務,所以它的查詢速度很快,對事務的完整性沒有要求,並且支援表級鎖,採用的是非聚簇...
徹底理解資料庫事務
事務 transaction 一般是指要做的或所做的事情。在計算機術語中是指訪問並可能更新資料庫中各種資料項的乙個程式執行單元 unit 在計算機術語中,事務通常就是指資料庫事務。乙個資料庫事務通常包含對資料庫進行讀或寫的乙個操作序列。它的存在包含有以下兩個目的 1 為資料庫操作提供了乙個從失敗中恢...
理解資料庫中的事務
什麼是事務?我們知道,資料庫是乙個面向多使用者的共享機制,因此資料庫管理系統應當具備併發控制和封鎖機制,保證資料庫系統的正常執行。但是當多個使用者訪問資料庫的時候,如果每乙個使用者程式乙個乙個的序列執行,則每一時刻只有乙個使用者執行對資料庫的操作,其他使用者必須等待,這樣的話會嚴重影響資料庫資源的使...