<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] # mysql的事務 默認的事務:一條sql語句就是一個事務 默認就開啟事務并提交事務 手動事務: 1)顯示的開啟一個事務:start transaction 2)事務提交:commit代表從開啟事務到事務提交 中間的所有的sql都認為有效 真正的更新數據庫 3)事務的回滾:rollback 代表事務的回滾 從開啟事務到事務回滾 中間的所有的 sql操作都認為無效數據庫沒有被更新 # JDBC事務操作 默認是自動事務: 執行sql語句:executeUpdate() ---- 每執行一次executeUpdate方法 代表 事務自動提交 通過jdbc的API手動事務: 開啟事務:conn.setAutoComnmit(false); 提交事務:conn.commit(); 回滾事務:conn.rollback(); 注意:控制事務的connnection必須是同一個 執行sql的connection與開啟事務的connnection必須是同一個才能對事務進行控制 # DBUtils事務操作 QueryRunner 有參構造:QueryRunner runner = new QueryRunner(DataSource dataSource); 有參構造將數據源(連接池)作為參數傳入QueryRunner,QueryRunner會從連 接池中獲得一個數據庫連接資源操作數據庫,所以直接使用無Connection參數 的update方法即可操作數據庫 無參構造:QueryRunner runner = new QueryRunner(); 無參的構造沒有將數據源(連接池)作為參數傳入QueryRunner,那么我們在使 用QueryRunner對象操作數據庫時要使用有Connection參數的方法 # 事務的特性和隔離級別 ## 事務的特性ACID 1)原子性(Atomicity)原子性是指事務是一個不可分割的工作單位,事務中的操作 要么都發生,要么都不發生。 2)一致性(Consistency)一個事務中,事務前后數據的完整性必須保持一致。 3)隔離性(Isolation)多個事務,事務的隔離性是指多個用戶并發訪問數據庫時, 一個用戶的 事務不能被其它用戶的事務所干擾,多個并發事務之間數據要相互隔離。 4)持久性(Durability)持久性是指一個事務一旦被提交,它對數據庫中數據的改變 就是永久性的,接下來即使數據庫發生故障也不應該對其有任何影響。 ## 并發訪問問題----由隔離性引起 如果不考慮隔離性,事務存在3中并發訪問問題。 1)臟讀:B事務讀取到了A事務尚未提交的數據 ------ 要求B事務要讀取A事 務提交的數據 2)不可重復讀:一個事務中 兩次讀取的數據的內容不一致 ----- 要求的是一個事 務中多次讀取時數據是一致的 --- unpdate 3)幻讀/虛讀:一個事務中 兩次讀取的數據的數量不一致 ----- 要求在一個事務多 次讀取的數據的數量是一致的 --insert delete ## 事務的隔離級別 1)read uncommitted : 讀取尚未提交的數據 :哪個問題都不能解決 2)read committed:讀取已經提交的數據 :可以解決臟讀 ---- oracle默認的 3)repeatable read:重讀讀取:可以解決臟讀 和 不可重復讀 ---mysql默認的 4)serializable:串行化:可以解決 臟讀 不可重復讀 和 虛讀---相當于鎖表 隔離級別的性能: read uncommitted>read committed>repeatable read>serialazable 安全性: read uncommitted<read committed<repeatable read<serialazable 注意:mysql數據庫默認的隔離級別 查看mysql數據庫默認的隔離級別: ~~~ select @@tx_isolation ~~~ ![](https://box.kancloud.cn/3ac0880410a946941b7fa09b50cd56df_606x312.jpg) 設置mysql的隔離級別:set session transaction isolation level 設置事務隔離級別 ![](https://box.kancloud.cn/662b35d749fc2ecdfcf6cf06aa76c046_1272x398.jpg)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看