揭秘Mysql事物部分update語句成功,部分失敗

2021-01-06 資料庫運維

使用mysql資料庫的小夥伴們,對mysql怎麼控制事物,語句的提交一定要了解清楚,如果應用代碼對事物使用不當,就會造成Mysql事物部分update語句成功,部分失敗。下面就詳細解釋其產生的原因

首先說一個mysql的事務提交的參數

這個參數很好理解,如果autocommit設置為1,就是開啟mysql資料庫自動提交的特性,設置為0,則不開啟自動提交。這裡需要提醒大家的是,設置為1之後,資料庫自動提交的意思,每當應用請求一個update,或者insert,或者delete語句時,Mysql就會提交這個語句。請注意,如果應用邏輯要實現的是一個事物包含3條update語句,大家都會認為,3個Update語句如果有一個執行失敗,則全部回滾,但是請注意,應用如果沒有在代碼中顯示的去啟用事物,mysql資料庫執行情況是這樣的

資料庫成功執行了1和2兩個update,第三個sql語句因為鎖等或者連接斷開,並沒有執行,最後的結果是什麼呢,就是語句1和語句2被資料庫正常提交,並落盤了。我換一個寫法,大家就明白了

因為事物沒有控制,就導致部分update語句成功,部分失敗。

相關焦點

  • MySQL批量操作語句,會部分成功嗎?
    在一個批量操作的sql中,如果一個失敗,其他的會怎麼樣呢第一種情況:先看一下,多條語句沒有事務控制的代碼$conn = Yii::$app->db1; $sql1 = &34;yang&34;vincent&39;; $sql2 = &34;yang&34;vincent1&39;;
  • mysql修改語句UPDATE的使用
    今天介紹一下update的使用,這個關鍵詞就是修改資料庫語句。我們看看在哪些環境會用到修改語句,比如在編輯輸入資料的時候發現資料錄錯了,或者某個信息要修改,這個時候就需要用到update了。我們實現的是最後原理,不管是asp,jsp還是php實現最底層都是通過sql語句修改資料庫,實現達到的效果。通過程序篩選出數據,在指定去執行。
  • mysql批量語句,怎麼保證操作都成功?
    在一個批量操作的sql中,如果一個失敗,其他的會怎麼樣呢第一種情況:先看一下,多條語句沒有事務控制的代碼$conn = Yii::$app->db1; $sql1 = 'insert into member (name,password) values
  • IT大叔詳談mysql中update語句和delete語句及應用
    學習是一件枯燥的事,你要犧牲自己的業餘時間,你要忍受孤獨,堅持下來了你就勝利了,學習是一個過程,只要循序漸進,每天進步一點點,只有這樣你才能提高進而成功。今天老韓來講一講mysql中的update語句和delete語句。一、update(更新)語句;update語句屬於DML語句,如果要更新資料庫中的數據時可以使用它。
  • update語句set中也可以使用and關鍵字
    我們平常寫sql更新數據,常見都是下面這種吧update student set no = '1', name = '張xx' where row_id = 3;但你是否有注意到,下面這條語句也是可以更新數據的update student set no = '1'
  • Mysql update多表聯合更新的方法小結
    知識點補充:  mysql多表關聯update  日常的開發中一般都是寫的單表update語句,很少寫多表關聯的update。  不同於sql server,在mysql中,update的多表連接更新和select的多表連接查詢在使用的方法上存在一些小差異。  來看一個具體的例子。
  • Mysql資料庫部分
    在筆試題最後一般都是有一道關於mysql語句的問題,讓手寫出增、刪、改、查語句,今天我們就學習一下mysql語句。4.update同一個表的修改在一個過程裡出現好幾十次,如:這類腳本其實可以很簡單就整合在一個UPDATE語句來完成(前些時候在協助xxx項目做性能問題分析時就發現存在這種情況)5.在可以使用UNION ALL的語句裡,使用了UNION
  • MySQL中delete和update語句的用法
    昨天和大家分享學習了insert,今天我們一起學習一下刪除與更新,即delete和update的用法。屬性名n=取值nWHERE 條件表達式;2、刪除記錄語法:DELETE FROM 表名 [ WHERE 條件表達式 ] ;刪除記錄,也是一樣,需要加上where條件,不然則是將整個表格記錄全部刪除的;現在來實際敲幾個案例,先進入昨天的表格中:連接資料庫-選擇資料庫-查看表:先來看一下更新語句
  • 揭秘MySQL大事務危害
    在應用層面1.儘量避免使用事務2.儘量避免在事務裡使用select語句,將select語句移除事務3.在一個事務裡,避免一次處理太多數據,如有批量處理大數據,應分批次處理。資料庫層面1.監控大事務,例如通過監控平臺,及時獲取事務超過10秒未提交的sql語句。
  • 千萬級高並發請求處理之mysql數據樂觀鎖及php代碼實現
    悲觀鎖悲觀鎖的特點是先獲取鎖,再進行業務操作,即「悲觀」的認為獲取鎖是非常有可能失敗的,因此要先確保獲取鎖成功再進行業務操作。通常所說的「一鎖二查三更新」即指的是使用悲觀鎖。通常來講在資料庫上的悲觀鎖需要資料庫本身提供支持,即通過常用的select … for update操作來實現悲觀鎖。
  • Node js 連接 MySQL 與 MongoDB
    ;// 插入數據let addSqlParams = ['zhao', '18'];// 連結 SQL 並實施語句connection.query(addSql, addSqlParams, (error, response) => { if (error) { console.log("新增失敗!")
  • SQL語句詳解:MySQL update的正確用法
    【IT168 技術】以下的文章主要介紹的是MySQL update 語句的實際用法,我們首先是以單表的UPDATE語句來引出實現MySQL update 語句的實際方案,以下就是文章的詳細內容描述,望你看完之後會有收穫。
  • 成都php工程師培訓整理了mysql語句,對你有幫助的!
    成都php工程師培訓整理了mysql語句,對你有幫助的!MySQL語句大全,每天跟著操作一遍,不信你不懂!文章正文整理了mysql語句,每天練習一遍,對你有幫助的!>delete from student;刪除所以記錄可以用命令truncate 刪除表,然後重建表,所以比delete命令快如:mysql>truncate table student;修改記錄 UPDATE 表名稱 SET 欄位名1=欄位值1WHERE 條件表達式如: mysql>update student
  • Jmeter 裡如何對 MySQL 資料庫進行增刪改查?
    注意,驅動包的版本要和資料庫的版本匹配,以免連接失敗。(MySQL 資料庫的 JDBC 驅動包下載地址:https://downloads.mysql.com/archives/c-j/)第二步:打開 Jmeter, 新建計劃,新建線程組,給線程組添加 JDBC connection configuration 配置元件,只需要做如下配置:
  • Jmeter 裡如何對 MySQL 資料庫進行增刪改查?
    注意,驅動包的版本要和資料庫的版本匹配,以免連接失敗。 ps: MySQL 資料庫 URL 的格式為:jdbc:mysql://ip:埠號/資料庫名?
  • 黑馬程式設計師:三分鐘學會如何找回mysql密碼
    一、在測試工作中我們肯定會寫一些sq查詢語句方便我們驗證數據是否正確,從而判斷當前軟體是否存在缺陷,但是查詢的過程中肯定需要我們先連接資料庫,如果資料庫密碼忘記我們就無法完成工作,這裡就教會大家如何快速修改密碼,和重置資料庫密碼,這樣在工作中很大提高我們工作的效率二、首先我們需要先學會如何修改
  • DBA必備技能,mysql權限管理(DCL語句)
    今天要講的內容跟DBA有很大關係,想做DBA權限管理是很重要的,今天就講一下mysql中的權限管理。一、用戶管理;1、切換資料庫;如下圖所示,將界面切換至命令界面;輸入命令use mysql;這句代碼意思是切換資料庫,切換到mysql這個資料庫下面,因為用戶信息在mysql下的user表內存儲著。
  • 如何在ubuntu20.04安裝MySQL並修改資料庫密碼
    sudo apt install mysql-client-core-83、再次輸入mysql命令,提示不能連接上mysql server,由提示可知mysql服務端沒有安裝;輸入命令安裝客戶端依賴包6、使用mysql -u root -p命令連接mysql服務,結果總是提示連接失敗;後來,查找到一種辦法,使用命令查找到另一用戶帳號和密碼
  • Atlas 分布式版重磅來襲,360 的 MySQL 中間層
    Sharding資料庫組在Atlas中, 將一個組看做是數據存儲的單位, 一個組由一臺master, 零臺或者多臺slave組成(mysql主從同步需要由用戶自己配置). 每個組之間的數據獨立, 沒有關係, 表的數據的各個部分存儲在各個組中.
  • 如何使用MySQL資料庫
    每條MySQL操作語句以分號「;」表示結束,輸入時可以區分大小寫,但習慣上將MySQL語句中的關鍵字部分大寫。示例:查看當前資料庫服務的基本信息。如下圖:註:values部分的值應與前面指定的各欄位逐一對應;如果這條記錄完整的包括了表中所有欄位的值,則插入語句中指定欄位的部分可以省略,可以如上圖中插入「lisi」這條記錄一樣。2)查詢數據記錄「select語句」:用於從指定的表中查找符合條件的數據記錄。語句格式為:「select 欄位名1,欄位名2,...