事務
事務由單獨一條或多條sql語句組成,在事務單元中,每條sql語句是相互依賴的。整個單元作為乙個不可分割的整體,一句sql語句執行失敗,則整個事務回滾。innodb支援事務。
事務的一般存在週期是:初始化事務,建立事務,應用select語句查詢相應資料是否被錄入,提交事務。四個步驟缺一不可。
start transaction;
insert into connectiuons(email,cellphone,qq,sid)
values('***@126.com',13000000000,10000,3);
select *from connection where sid = 3;
commmit;
一般步驟如上,事務回滾使用 rollback命令
mysql中還存在兩個可以控制行為的變數,分別是自動提交和改變事務的孤立級別。
孤立級別:
serializable(序列化)只有當事務提交以後才能被使用者看到,需要使用大量的資源用以隱蔽事務
repeatable read (可重讀)安全性部分妥協,效能進以提高。
read commmitted(提交後讀)安全性進一步降低,事務
read uncommitted(未讀提交)提供事務之間最小的隔離度
死鎖:兩個或者多個處於不同序列的使用者打算同時更新某個相同的資料庫的時候,因為相互等待對方釋放許可權而導致的雙方一直出於等待的狀態。實際應用中,如果不同序列的客戶打算同時對資料執行操作,極有可能發生死鎖。
表鎖定代替事務
myisam中不支援事務,因此使用者在使用資料庫的時候,操作都會實時的儲存在磁碟裡面。在多使用者的環境裡面的,使用表鎖定,可以避免同一時間的多個使用者對資料庫中的指定表進行操做
事件
mysql事務與鎖機制 mysql事務與鎖機制
在併發下事務會容易出現的一些問題 資料更新丟失 兩個事務同時操作一條資料,乙個事務因為異常導致資料更新丟失 髒讀 乙個失誤開始讀取了某行資料,另外乙個事務已經更新了此資料但沒有能夠及時提交。這是相當危險的,因為很可能所有的操作都被回滾。不可重複讀 乙個事務對同一行資料重複讀取兩次,但是卻得到了不同的...
mysql教程 mysql事務與mysql儲存引擎
事務概念及儲存引擎 1.0為何要事務?先來看乙個場景,銀行轉賬匯款 李彥巨集和周鴻?天天打架,現在讓李彥巨集給周鴻?轉款1000元 設計如下表 account表 編號 id 使用者名稱 user 金額 cash 1 李彥巨集 3000 2 周鴻?2000 傳統的做法 mysql update acc...
MySQL事務與索引
事務 就是將一組sql語句放在同一批次內去執行 如果乙個sql語句出錯,則該批次內的所有sql都將被取消執行 事務的acid原則 1.原子性 2.一致性 3.隔離性 4.永續性 set autocommit 使用set語句來改變自動提交模式 set autocommit 0 關閉自動提交模式 set...