A. 資料庫事務四大特性是什麼
1、原子性(Atomicity)
原子性是指事務包含的所有操作要麼全部成功,要麼全部失敗回滾,因此事務的操作如果成功就必須要完全應用到資料庫,如果操作失敗則不能對資料庫有任何影響。
2、 一致性(Consistency)
一致性是指事務必須使資料庫從一個一致性狀態變換到另一個一致性狀態,也就是說一個事務執行之前和執行之後都必須處於一致性狀態。
拿轉賬來說,假設用戶A和用戶B兩者的錢加起來一共是5000,那麼不管A和B之間如何轉賬,轉幾次賬,事務結束後兩個用戶的錢相加起來應該還得是5000,這就是事務的一致性。
3、隔離性(Isolation)
隔離性是當多個用戶並發訪問資料庫時,比如操作同一張表時,資料庫為每一個用戶開啟的事務,不能被其他事務的操作所干擾,多個並發事務之間要相互隔離。
即要達到這么一種效果:對於任意兩個並發的事務T1和T2,在事務T1看來,T2要麼在T1開始之前就已經結束,要麼在T1結束之後才開始,這樣每個事務都感覺不到有其他事務在並發地執行。
4、持久性(Durability)
持久性是指一個事務一旦被提交了,那麼對資料庫中的數據的改變就是永久性的,即便是在資料庫系統遇到故障的情況下也不會丟失提交事務的操作。
(1)資料庫事務四個特性擴展閱讀
在資料庫中,關於讀數據的概念:
1、臟讀(Dirty Reads):所謂臟讀就是對臟數據(Drity Data)的讀取,而臟數據所指的就是未提交的數據。也就是說,一個事務正在對一條記錄做修改,在這個事務完成並提交之前,這條數據是處於待定狀態的(可能提交也可能回滾)。
這時,第二個事務來讀取這條沒有提交的數據,並據此做進一步的處理,就會產生未提交的數據依賴關系。這種現象被稱為臟讀。
2、不可重復讀(Non-Repeatable Reads):一個事務先後讀取同一條記錄,但兩次讀取的數據不同,我們稱之為不可重復讀。也就是說,這個事務在兩次讀取之間該數據被其它事務所修改。
3、幻讀(Phantom Reads):一個事務按相同的查詢條件重新讀取以前檢索過的數據,卻發現其他事務插入了滿足其查詢條件的新數據,這種現象就稱為幻讀。
B. 鏁版嵁搴撲簨鍔″洓澶х壒鎬ф槸浠涔堬紵
浜嬪姟鐨勶細鍘熷瓙鎬с佷竴鑷存с佸垎紱繪с佹寔涔呮 鍘熷瓙鎬с佷竴鑷存с佸垎紱繪с佹寔涔呮(1) 鍘熷瓙鎬с 浜嬪姟鐨勫師瀛愭ф寚鐨勬槸錛屼簨鍔′腑鍖呭惈鐨勭▼搴忎綔涓烘暟鎹搴撶殑閫昏緫宸ヤ綔鍗曚綅錛屽畠鎵鍋氱殑瀵規暟鎹淇鏀規搷浣滆佷箞鍏ㄩ儴鎵ц岋紝瑕佷箞瀹屽叏涓嶆墽琛屻傝繖縐嶇壒鎬хО涓哄師瀛愭с 銆 浜嬪姟鐨勫師瀛愭ц佹眰錛屽傛灉鎶婁竴涓浜嬪姟鍙鐪嬩綔鏄涓涓紼嬪簭錛屽畠瑕佷箞瀹屾暣鐨勮鎵ц岋紝瑕佷箞瀹屽叏涓嶆墽琛屻傚氨鏄璇翠簨鍔$殑鎿嶇旱搴忓垪鎴栬呭畬鍏ㄥ簲鐢ㄥ埌鏁版嵁搴撴垨鑰呭畬鍏ㄤ笉褰卞搷鏁版嵁搴撱傝繖縐嶇壒鎬хО涓哄師瀛愭с 鍋囧傜敤鎴峰湪涓涓浜嬪姟鍐呭畬鎴愪簡瀵規暟鎹搴撶殑鏇存柊錛岃繖鏃舵墍鏈夌殑鏇存柊瀵瑰栭儴涓栫晫蹇呴』鏄鍙瑙佺殑錛屾垨鑰呭畬鍏ㄦ病鏈夋洿鏂般傚墠鑰呯О浜嬪姟宸叉彁浜わ紝鍚庤呯О浜嬪姟鎾ゆ秷錛堟垨嫻佷駭錛夈侱BMS蹇呴』紜淇濈敱鎴愬姛鎻愪氦鐨勪簨鍔″畬鎴愮殑鎵鏈夋搷綰靛湪鏁版嵁搴撳唴鏈夊畬鍏ㄧ殑鍙嶆槧錛岃屽け璐ョ殑浜嬪姟瀵規暟鎹搴撳畬鍏ㄦ病鏈夊獎鍝嶃 (2) 涓鑷存т簨鍔$殑涓鑷存ф寚鐨勬槸鍦ㄤ竴涓浜嬪姟鎵ц屼箣鍓嶅拰鎵ц屼箣鍚庢暟鎹搴撻兘蹇呴』澶勪簬涓鑷存х姸鎬併傝繖縐嶇壒鎬хО涓轟簨鍔$殑涓鑷存с傚亣濡傛暟鎹搴撶殑鐘舵佹弧瓚蟲墍鏈夌殑瀹屾暣鎬х害鏉燂紝灝辮磋ユ暟鎹搴撴槸涓鑷寸殑銆 銆銆涓鑷存у勭悊鏁版嵁搴撲腑瀵規墍鏈夎涔夌害鏉熺殑淇濇姢銆傚亣濡傛暟鎹搴撶殑鐘舵佹弧瓚蟲墍鏈夌殑瀹屾暣鎬х害鏉燂紝灝辮磋ユ暟鎹搴撴槸涓鑷寸殑銆備緥濡傦紝褰撴暟鎹搴撳勪簬涓鑷存х姸鎬丼1鏃訛紝瀵規暟鎹搴撴墽琛屼竴涓浜嬪姟錛屽湪浜嬪姟鎵ц屾湡闂村亣瀹氭暟鎹搴撶殑鐘舵佹槸涓嶄竴鑷寸殑錛屽綋浜嬪姟鎵ц岀粨鏉熸椂錛屾暟鎹搴撳勫湪涓鑷存х姸鎬丼2銆 (3) 鍒嗙繪с銆鍒嗙繪ф寚騫跺彂鐨勪簨鍔℃槸鐩鎬簰闅旂葷殑銆傚嵆涓涓浜嬪姟鍐呴儴鐨勬搷浣滃強姝e湪鎿嶄綔鐨勬暟鎹蹇呴』灝侀攣璧鋒潵錛屼笉琚鍏跺畠浼佸浘榪涜屼慨鏀圭殑浜嬪姟鐪嬪埌銆 鍒嗙繪ф槸DBMS閽堝瑰苟鍙戜簨鍔¢棿鐨勫啿紿佹彁渚涚殑瀹夊叏淇濊瘉銆侱BMS鍙浠ラ氳繃鍔犻攣鍦ㄥ苟鍙戞墽琛岀殑浜嬪姟闂存彁渚涗笉鍚岀駭鍒鐨勫垎紱匯傚亣濡傚苟鍙戜氦鍙夋墽琛岀殑浜嬪姟娌℃湁浠諱綍鎺у埗錛屾搷綰電浉鍚岀殑鍏變韓瀵硅薄鐨勫氫釜騫跺彂浜嬪姟鐨勬墽琛屽彲鑳藉紩璧峰紓甯告儏鍐點 銆銆DBMS鍙浠ュ湪騫跺彂鎵ц岀殑浜嬪姟闂存彁渚涗笉鍚岀駭鍒鐨勫垎紱匯傚垎紱葷殑綰у埆鍜屽苟鍙戜簨鍔$殑鍚炲悙閲忎箣闂村瓨鍦ㄥ弽姣斿叧緋匯傝緝澶氫簨鍔$殑鍙鍒嗙繪у彲鑳戒細甯︽潵杈冮珮鐨勫啿紿佸拰杈冨氱殑浜嬪姟嫻佷駭銆傛祦浜х殑浜嬪姟瑕佹秷鑰楄祫婧愶紝榪欎簺璧勬簮蹇呴』瑕侀噸鏂拌璁塊棶銆傚洜姝わ紝紜淇濋珮鍒嗙葷駭鍒鐨凞BMS闇瑕佹洿澶氱殑寮閿銆 (4)鎸佷箙鎬с銆鎸佷箙鎬ф剰鍛崇潃褰撶郴緇熸垨浠嬭川鍙戠敓鏁呴殰鏃訛紝紜淇濆凡鎻愪氦浜嬪姟鐨勬洿鏂頒笉鑳戒涪澶便傚嵆涓鏃︿竴涓浜嬪姟鎻愪氦錛孌BMS淇濊瘉瀹冨規暟鎹搴撲腑鏁版嵁鐨勬敼鍙樺簲璇ユ槸姘鎬箙鎬х殑錛岃愬緱浣忎換浣曠郴緇熸晠闅溿傛寔涔呮ч氳繃鏁版嵁搴撳囦喚鍜屾仮澶嶆潵淇濊瘉銆 銆銆鎸佷箙鎬ф剰鍛崇潃褰撶郴緇熸垨浠嬭川鍙戠敓鏁呴殰鏃訛紝紜淇濆凡鎻愪氦浜嬪姟鐨勬洿鏂頒笉鑳戒涪澶便傚嵆瀵瑰凡鎻愪氦浜嬪姟鐨勬洿鏂拌兘鎮㈠嶃備竴鏃︿竴涓浜嬪姟琚鎻愪氦錛孌BMS蹇呴』淇濊瘉鎻愪緵閫傚綋鐨勫啑浣欙紝浣垮叾鑰愬緱浣忕郴緇熺殑鏁呴殰銆
C. 事務有哪些特性
事務(Transaction)是訪問並可能更新資料庫中各種數據項的一個程序執行單元(unit)。事務通常由高級資料庫操縱語言或編程語言(如SQL,C++或Java)書寫的用戶程序的執行所引起,並用形如begin
transaction和end
transaction語句(或函數調用)來界定。事務由事務開始(begin
transaction)和事務結束(end
transaction)之間執行的全體操作組成。
例如:在關系資料庫中,一個事務可以是一條SQL語句,一組SQL語句或整個程序。
特性事務是恢復和並發控制的基本單位。
事務應該具有4個屬性:原子性、一致性、隔離性、持續性。這四個屬性通常稱為ACID特性。
原子性(atomicity)。一個事務是一個不可分割的工作單位,事務中包括的操作要麼都做,要麼都不做。
一致性(consistency)。事務必須是使資料庫從一個一致性狀態變到另一個一致性狀態。一致性與原子性是密切相關的。
隔離性(isolation)。一個事務的執行不能被其他事務干擾。即一個事務內部的操作及使用的數據對並發的其他事務是隔離的,並發執行的各個事務之間不能互相干擾。
持久性(rability)。持續性也稱永久性(permanence),指一個事務一旦提交,它對資料庫中數據的改變就應該是永久性的。接...事務(Transaction)是訪問並可能更新資料庫中各種數據項的一個程序執行單元(unit)。事務通常由高級資料庫操縱語言或編程語言(如SQL,C++或Java)書寫的用戶程序的執行所引起,並用形如begin
transaction和end
transaction語句(或函數調用)來界定。事務由事務開始(begin
transaction)和事務結束(end
transaction)之間執行的全體操作組成。
例如:在關系資料庫中,一個事務可以是一條SQL語句,一組SQL語句或整個程序。
特性事務是恢復和並發控制的基本單位。
事務應該具有4個屬性:原子性、一致性、隔離性、持續性。這四個屬性通常稱為ACID特性。
原子性(atomicity)。一個事務是一個不可分割的工作單位,事務中包括的操作要麼都做,要麼都不做。
一致性(consistency)。事務必須是使資料庫從一個一致性狀態變到另一個一致性狀態。一致性與原子性是密切相關的。
隔離性(isolation)。一個事務的執行不能被其他事務干擾。即一個事務內部的操作及使用的數據對並發的其他事務是隔離的,並發執行的各個事務之間不能互相干擾。
持久性(rability)。持續性也稱永久性(permanence),指一個事務一旦提交,它對資料庫中數據的改變就應該是永久性的。接下來的其他操作或故障不應該對其有任何影響。