好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 詳解MySQL與Spring的自動提交(autocommit)

詳解MySQL與Spring的自動提交(autocommit)

熱門標簽:百應電話機器人優勢 南昌三維地圖標注 曲靖移動外呼系統公司 啥是企業400電話辦理 電話外呼系統改號 外呼系統打電話上限是多少 怎樣在地圖標注銷售區域 武漢網絡外呼系統服務商 地圖標注費用是多少

1 MySQL的autocommit設置

MySQL默認是開啟自動提交的,即每一條DML(增刪改)語句都會被作為一個單獨的事務進行隱式提交。如果修改為關閉狀態,則執行DML語句之后要手動提交 才能生效。
查詢當前會話的自動提交是否開啟:

mysql> show variables like 'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit  | ON  |
+---------------+-------+

查詢全局的自動提交是否開啟:

mysql> show global variables like 'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit  | ON  |
+---------------+-------+

通過修改autocommit變量可以關閉和開啟操作

關閉當前會話的自動提交模式
mysql> set autocommit=0;

 
mysql> show variables like 'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit  | OFF  |
+---------------+-------+

 全局的autocommit還是開啟狀態
mysql> show global variables like 'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit  | ON  |
+---------------+-------+

 
 關閉全局的autocommit
mysql> set global autocommit=0;

 
mysql> show global variables like 'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit  | OFF  |
+---------------+-------+

如果想要MySQL服務重啟之后仍能生效,需要設置系統環境變量。MySQL5.7 在cnf配置文件中[mysqld]下面設置autocommit的值。

[mysqld]
...
autocommit=0

Spring中對自動提交的控制

MySQL的JDBC驅動包 mysql-connector-java 會給會話的connection默認開啟自動提交,譬如 mysql-connector-java-8.0.22版本的代碼:

//com.mysql.cj.protocol.a.NativeServerSession.java
  private boolean autoCommit = true;

常用的數據庫連接池 如HikariCP,druid等,默認也是開啟自動提交,會將connection的自動提交設置都改為true。
druid在初始化DataSource的時候設置connection的autocommit為true。代碼如下:

com.alibaba.druid.pool.DruidAbstractDataSource.java
  protected volatile boolean             defaultAutoCommit             = true;
  ...
  public void initPhysicalConnection(Connection conn, MapString, Object> variables, MapString, Object> globalVariables) throws SQLException {
    if (conn.getAutoCommit() != defaultAutoCommit) {
      //將connection的autocommit設置為true
      conn.setAutoCommit(defaultAutoCommit);
    }
    ...
 
  }

HikariCP 初始化DataSource的默認配置 中autocommit也是true:

com.zaxxer.hikari.HikariConfig.java
  public HikariConfig()
  {
   ...
   isAutoCommit = true;
  }

對于事務管理器PlatformTransactionManager管理的顯式事務(譬如@Transactional注解聲明)在 開啟事務時會關閉自動提交模式。 代碼如下:

	@Override
	protected void doBegin(Object transaction, TransactionDefinition definition) {
		DataSourceTransactionObject txObject = (DataSourceTransactionObject) transaction;
		Connection con = null;

		try {
      		........

			// Switch to manual commit if necessary. This is very expensive in some JDBC drivers,
			// so we don't want to do it unnecessarily (for example if we've explicitly
			// configured the connection pool to set it already).
			if (con.getAutoCommit()) {
				txObject.setMustRestoreAutoCommit(true);
				if (logger.isDebugEnabled()) {
					logger.debug("Switching JDBC Connection [" + con + "] to manual commit");
				}
                //關閉自動提交模
                con.setAutoCommit(false);
			}

      		.......
		}

		catch (Throwable ex) {
     		.......
		}
	}

總結

MySQL的autocommit模式默認是打開狀態,為了防止手動的DML操作導致失誤,生產環境可以設置為默認關閉的狀態。一般的jdbc 連接池默認都是開啟狀態,而且是可配置的。顯式事務下會設置成關閉狀態,單純的修改數據庫環境的autocommit不會對代碼的行為產生影響。

以上就是詳解MySQL與Spring的自動提交(autocommit)的詳細內容,更多關于MySQL 自動提交(autocommit)的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • MySQL找出未提交事務的SQL實例淺析
  • mysql實現事務的提交與回滾的實例詳解
  • MySQL找出未提交事務信息的方法分享
  • Mysql事務隔離級別之讀提交詳解
  • 探究MySQL中索引和提交頻率對InnoDB表寫入速度的影響
  • php將textarea數據提交到mysql出現很多空格的解決方法
  • mysql實現事務的提交和回滾實例
  • python連接mysql并提交mysql事務示例
  • JSP+ MySQL中文亂碼問題post提交亂碼解決方案

標簽:黑河 錦州 荊州 資陽 甘南 滄州 吉林 隨州

巨人網絡通訊聲明:本文標題《詳解MySQL與Spring的自動提交(autocommit)》,本文關鍵詞  詳解,MySQL,與,Spring,的,自動,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解MySQL與Spring的自動提交(autocommit)》相關的同類信息!
  • 本頁收集關于詳解MySQL與Spring的自動提交(autocommit)的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 国内精品久久久久影视老司机| 性行为| 韩国中字A片在线播放| 噜噜噜噜噜色| 99久久亚洲综合精品网站| 精品国产理论在线观看不卡| 老司机福利精品视频| 四大美女思春艳史片| 99国产精品偷窥熟女精品视频| 同城炮约免费| 天天夜夜狠狠| 少妇高潮a 6 2v久A片免费| 精品国产三麻豆传级a在线| 小姨子的爱在线观看| 欧美一级黄色片子| 私密人体艺木| 波多野结衣sw医院被前男友| 又黄又爽又猛的视频免费| 丰满老女人A片免费观看| 国产sM残忍打屁股调教97| 宜章县| 美女隐私秘秘?18禁视频| 女を縄で缚っ紧缚| 亚洲欧美日韩一级特黄在线| 开局获得不死天功| 中日韩在线观看| 老女人老妇性XXXⅩHD| 强行挺进美艳麻麻体内| 三级免费网| 动漫美女把尿口扒开让男人桶| 法国禁忌片性迷宫2| 再深点灬舒服灬太大了添阿宾视频 | 久久久青草青青国产亚洲免观| 国产欧美一区二区三区精华液好吗 | 在线观看黄色网页| 成人免费在线观看网站| 95影院理论片在线观看| 精品久一区一区三区欧美肉丝| 大胖子h粗污| 国产一级特大黄毛片| 久久精品免费观看久久|