講解MySQL中的事務(wù)特性
一個事務(wù)是一個連續(xù)的一組數(shù)據(jù)庫操作,就好像它是一個單一的工作單元進行。換言之,永遠不會是完整的事務(wù),除非該組內(nèi)的每個單獨的操作是成功的。如果在事務(wù)的任何操作失敗,則整個事務(wù)將失敗。
實際上,會俱樂部許多SQL查詢到一個組中,將執(zhí)行所有的人都一起作為事務(wù)的一部分。
事務(wù)的特性:
事務(wù)有以下四個標準屬性的縮寫ACID,通常被稱為:
- 原子性: 確保工作單元內(nèi)的所有操作都成功完成,否則事務(wù)將被中止在故障點,和以前的操作將回滾到以前的狀態(tài)。
- 一致性: 確保數(shù)據(jù)庫正確地改變狀態(tài)后,成功提交的事務(wù)。
- 隔離性: 使事務(wù)操作彼此獨立的和透明的。
- 持久性: 確保提交的事務(wù)的結(jié)果或效果的系統(tǒng)出現(xiàn)故障的情況下仍然存在。
- 在MySQL中,事務(wù)開始使用COMMIT或ROLLBACK語句開始工作和結(jié)束。開始和結(jié)束語句的SQL命令之間形成了大量的事務(wù)。
- COMMIT & ROLLBACK:
- 這兩個關(guān)鍵字提交和回滾主要用于MySQL的事務(wù)。
- 當一個成功的事務(wù)完成后,發(fā)出COMMIT命令應(yīng)使所有參與表的更改才會生效。
- 如果發(fā)生故障時,應(yīng)發(fā)出一個ROLLBACK命令返回的事務(wù)中引用的每一個表到以前的狀態(tài)。
可以控制的事務(wù)行為稱為AUTOCOMMIT設(shè)置會話變量。如果AUTOCOMMIT設(shè)置為1(默認值),然后每一個SQL語句(在事務(wù)與否)被認為是一個完整的事務(wù),并承諾在默認情況下,當它完成。 AUTOCOMMIT設(shè)置為0時,發(fā)出SET AUTOCOMMIT =0命令,在隨后的一系列語句的作用就像一個事務(wù),直到一個明確的COMMIT語句時,沒有活動的提交。
可以通過使用mysql_query()函數(shù)在PHP中執(zhí)行這些SQL命令。
通用事務(wù)例子
這一系列事件是獨立于所使用的編程語言,可以建立在任何使用的語言來創(chuàng)建應(yīng)用程序的邏輯路徑。
可以通過使用mysql_query()函數(shù)在PHP中執(zhí)行這些SQL命令。
- BEGIN WORK開始事務(wù)發(fā)出SQL命令
- 發(fā)出一個或多個SQL命令,如SELECT,INSERT,UPDATE或DELETE
- 檢查是否有任何錯誤,一切都依據(jù)的需要。
- 如果有任何錯誤,那么問題ROLLBACK命令,否則發(fā)出COMMIT命令。
在MySQL中的事務(wù)安全表類型:
如果打算使用MySQL事務(wù)編程,那么就需要一種特殊的方式創(chuàng)建表。有很多支持事務(wù)但最流行的是InnoDB表類型。
從源代碼編譯MySQL時,InnoDB表支持需要特定的編譯參數(shù)。如果MySQL版本沒有InnoDB支持,請互聯(lián)網(wǎng)服務(wù)提供商建立一個版本的MySQL支持InnoDB表類型,或者下載并安裝Windows或Linux/UNIX的MySQL-Max二進制分發(fā)和使用的表類型在開發(fā)環(huán)境中。
如果MySQL安裝支持InnoDB表,只需添加一個的TYPE=InnoDB 定義表創(chuàng)建語句。例如,下面的代碼創(chuàng)建InnoDB表tcount_tbl:
root@host# mysql -u root -p password; Enter password:******* mysql> use TUTORIALS; Database changed mysql> create table tcount_tbl -> ( -> tutorial_author varchar(40) NOT NULL, -> tutorial_count INT -> ) TYPE=InnoDB; Query OK, 0 rows affected (0.05 sec)
請查看下面的鏈接了解更多關(guān)于: InnoDB
可以使用其他GEMINI或BDB表類型,但它取決于您的安裝,如果它支持這兩種類型。
相關(guān)文章
Mysql計算字段長度函數(shù)之CHAR_LENGTH函數(shù)
mysql中計算字符串長度有兩個函數(shù)分別為char_length和length,char_length函數(shù)可以計算unicode字符,下面這篇文章主要給大家介紹了關(guān)于Mysql計算字段長度函數(shù)之CHAR_LENGTH函數(shù)的相關(guān)資料,需要的朋友可以參考下2023-05-05MySQL 5.7增強版Semisync Replication性能優(yōu)化
這篇文章主要介紹了MySQL 5.7增強版Semisync Replication性能優(yōu)化,本文著重講解支持發(fā)送binlog和接受ack的異步化、支持在事務(wù)commit前等待ACK兩項內(nèi)容,需要的朋友可以參考下2015-05-05