国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

mysql事務處理用法與實例細說

2024-07-24 12:31:31
字體:
來源:轉載
供稿:網友
       代碼如下 復制代碼 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)
可以使用其他GEMINI或BDB表類型,但它取決于您的安裝,如果它支持這兩種類型。
 
事務 ACID Atomicity(原子性)、Consistency(穩定性)、Isolation(隔離性)、Durability(可靠性)
 
1、事務的原子性
一組事務,要么成功;要么撤回。
 
2、穩定性
有非法數據(外鍵約束之類),事務撤回。
 
3、隔離性
事務獨立運行。
一個事務處理后的結果,影響了其他事務,那么其他事務會撤回。
事務的100%隔離,需要犧牲速度。
 
4、可靠性
軟、硬件崩潰后,InnoDB數據表驅動會利用日志文件重構修改。
可靠性和高速度不可兼得, innodb_flush_log_at_trx_commit選項 決定什么時候吧事務保存到日志里。
開啟事務
START TRANSACTION 或 BEGIN
 
折返點
SAVEPOINT adqoo_1
ROLLBACK TO SAVEPOINT adqoo_1
發生在折返點 adqoo_1 之前的事務被提交,之后的被忽略
 
需要用以下模式來設定鎖定模式
 
1、SELECT …… LOCK IN SHARE MODE(共享鎖)
查詢到的數據,就是數據庫在這一時刻的數據(其他已commit事務的結果,已經反應到這里了)
SELECT 必須等待,某個事務結束后才能執行
 
2、SELECT …… FOR UPDATE(排它鎖)
例如 SELECT * FROM tablename WHERE id<200
那么id<200的數據,被查詢到的數據,都將不能再進行修改、刪除、SELECT …… LOCK IN SHARE MODE操作
一直到此事務結束
 
共享鎖 和 排它鎖 的區別:在于是否阻斷其他客戶發出的 SELECT …… LOCK IN SHARE MODE命令
 
3、INSERT / UPDATE / DELETE
所有關聯數據都會被鎖定,加上排它鎖
 
4、防插入鎖
例如 SELECT * FROM tablename WHERE id>200
那么id>200的記錄無法被插入
 
5、死鎖
自動識別死鎖
先進來的進程被執行,后來的進程收到出錯消息,并按ROLLBACK方式回滾
innodb_lock_wait_timeout = n 來設置最長等待時間,默認是50秒
 
mysql事物處理實例
 
MYSQL的事務處理主要有兩種方法
1.用begin,rollback,commit來實現
    begin開始一個事務
    rollback事務回滾
    commit 事務確認
2.直接用set來改變mysql的自動提交模式
    mysql默認是自動提交的,也就是你提交一個query,就直接執行!可以通過
    set autocommit = 0 禁止自動提交
    set autocommit = 1 開啟自動提交
    來實現事務的處理。
但要注意當用set autocommit = 0 的時候,你以后所有的sql都將作為事務處理,直到你用commit確認或 rollback結束,注意當你結束這個事務的同時也開啟了新的事務!按第一種方法只將當前的做為一個事務!
MYSQL只有 INNODB和BDB類型的數據表才支持事務處理,其他的類型是不支持的!

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 遂宁市| 栾城县| 高台县| 扶绥县| 南和县| 七台河市| 五河县| 科尔| 车险| 深州市| 鄢陵县| 塘沽区| 讷河市| 桑植县| 大冶市| 聊城市| 凌云县| 邓州市| 呼伦贝尔市| 辰溪县| 西林县| 旬阳县| 凤山县| 石景山区| 綦江县| 枣强县| 澳门| 天峻县| 安多县| 云梦县| 兴仁县| 昌黎县| 晋宁县| 白水县| 陇川县| 休宁县| 洱源县| 西和县| 政和县| 都昌县| 汾阳市|