首頁 資料庫 mysql教程 MySql事务无法回滚的原因_MySQL

MySql事务无法回滚的原因_MySQL

Jun 01, 2016 pm 01:01 PM
事務 原因

使用MySQL时,如果发现事务无法回滚,但Hibernate、Spring、JDBC等配置又没有明显问题时,不要苦恼,先看看MySQL创建的表有没有问题,即表的类型。

InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。

MyIASM是IASM表的新版本,有如下扩展:

二进制层次的可移植性。

NULL列索引。

对变长行比ISAM表有更少的碎片。

支持大文件。

更好的索引压缩。

更好的键吗统计分布。

更好和更快的auto_increment处理。

以下是一些细节和具体实现的差别:

1. InnoDB不支持FULLTEXT类型的索引。

2. InnoDB中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含where条件时,两种表的操作是一样的。

3. 对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。

4. DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。

5. LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用。

另外,InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update table set num=1 where name like “%aaa%”

任何一种表都不是万能的,只用恰当的针对业务类型来选择合适的表类型,才能最大的发挥MySQL的性能优势。

在MySQL 5.0里面,MyISAM和InnoDB存储引擎性能差别并不是很大,针对InnoDB来说,影响性能的主要是 innodb_flush_log_at_trx_commit 这个选项,如果设置为1的话,那么每次插入数据的时候都会自动提交,导致性能急剧下降,应该是跟刷新日志有关系,设置为0效率能够看到明显提升,当然,同样你可以SQL中提交“SET AUTOCOMMIT = 0”来设置达到好的性能。另外,还听说通过设置innodb_buffer_pool_size能够提升InnoDB的性能,但是我测试发现没有特别明显的提升。

基本上我们可以考虑使用InnoDB来替代我们的MyISAM引擎了,因为InnoDB自身很多良好的特点,比如事务支持、存储过程、视图、行级锁定等等,在并发很多的情况下,相信InnoDB的表现肯定要比MyISAM强很多,当然,相应的在my.cnf中的配置也是比较关键的,良好的配置,能够有效的加速你的应用。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

投影機失敗的原因是什麼「新手必看:無線投影機連線不成功的方法」 投影機失敗的原因是什麼「新手必看:無線投影機連線不成功的方法」 Feb 07, 2024 pm 05:03 PM

無線投影螢幕為什麼會連線不成功呢?有些小夥伴反映在使用無線投影螢幕的時候,會出現連線失敗的狀況,這是怎麼回事呢?無線投影機連線失敗怎麼辦?請確認您的電腦、電視和手機是否連接在同一個WiFi網路上。投影機軟體要求設備在同一網路下才能正常使用,而快點投影螢幕也不例外。因此,請您迅速檢查您的網路設定。確定是否支援投影功能很重要。智慧型電視和手機通常都支援DLNA或AirPlay功能。如果不支援投影機功能,就無法傳屏。確認設備是否正確連接:在同一WiFi下的設備可能有多個,確保連接的是想要實現同螢幕的設備。 4、確保網路的

什麼原因導致wps office無法啟動列印作業 什麼原因導致wps office無法啟動列印作業 Mar 20, 2024 am 09:52 AM

在區域網路內連接印表機啟動列印作業時會出現一些小狀況,例如偶爾會出現「wpsoffice無法啟動列印作業…」的問題,造成無法列印出文件等,耽誤我們的工作和學習,造成不好的影響,下面就告訴大家,怎麼解決wpsoffice無法啟動列印作業的問題?當然你可以升級軟體或是升級驅動等方案解決,但是這樣花費你好長的時間,下面我就給大家較少一種分分鐘可以搞定的方案。首先註意到wpsoffice無法啟動列印作業,導致無法進行列印。要解決這個問題,就需要逐一檢查。另外,確認印表機已開啟並連接。一般連接不正常會造

PHP 500錯誤全面指南:原因、診斷與修復 PHP 500錯誤全面指南:原因、診斷與修復 Mar 22, 2024 pm 12:45 PM

PHP500錯誤全面指南:原因、診斷與修復在PHP開發過程中,我們常會遇到HTTP狀態碼為500的錯誤。這種錯誤通常被稱為"500InternalServerError",它是指在伺服器端處理請求時發生了一些未知的錯誤。在本文中,我們將探討PHP500錯誤的常見原因、診斷方法以及修復方法,並提供具體的程式碼範例供參考。 1.500錯誤的常見原因1.

蘋果手機充電很慢是什麼原因 蘋果手機充電很慢是什麼原因 Mar 08, 2024 pm 06:28 PM

使用蘋果手機時,一些用戶可能會遇到充電速度緩慢的問題。造成這種問題的原因有很多種,可能是因為充電設備功率過低,設備故障,或是手機的USB介面出現問題,甚至是電池老化等因素導致的。蘋果手機充電很慢是什麼原因答:充電設備問題,手機硬體問題,手機系統問題。 1.用戶在使用功率比較低的充電設備時,手機的充電速度就會很慢。 2.使用第三方的劣質充電器或是充電線也會導致充電速度很慢。 3.推薦用戶使用官方的原廠充電器,或是更換正規的有認證的高功率充電器。 4.用戶的手機硬體出現問題,比如說手機的usb介面接觸不

揭秘win11藍色畫面導致的根本原因 揭秘win11藍色畫面導致的根本原因 Jan 04, 2024 pm 05:32 PM

相信不少朋友都遇過系統藍屏的問題,不過不知道win11藍屏原因是什麼,其實導致系統藍屏的原因是有很多的,我們可以依序排查進行解決。 win11藍色畫面原因:一、記憶體不足1、運行太多軟體或遊戲消耗記憶體太大的時候可能發生。 2.尤其是現在win11存在記憶體溢出的bug,所以很有可能會遇到。 3.這時候可以嘗試設定虛擬記憶體來解決,不過最好的方法還是升級記憶體條。二、CPU超頻過熱1、CPU的問題原因其實跟記憶體差不多。 2.一般會發生在使用後期、建模等軟體,或在玩大型遊戲時發生。 3.CPU的消耗過大就會出現藍屏

win11為什麼會自動關機 win11為什麼會自動關機 Jan 01, 2024 pm 11:39 PM

最近有朋友在更新系統後,遇到了win11自動關機的問題,很多情況下都會在玩遊戲的時候發生,不知道是什麼原因導致的。其實這可能是因為電腦配置不足,或是系統故障造成,以下一起來看看原因及解決方法吧。 win11自動關機什麼原因一、配置不足1、Windows11系統對於cpu和記憶體需求比Windows10高一些。 2.尤其是在運行大型遊戲等任務時,極易出現自動關機的情況。 3.使用者可以試著還原到自動關機前的使用情況,右鍵點擊開始功能表圖標,開啟「任務管理器」頁面。 4.我們在這個頁面查看CPU、記憶體、磁碟

排除HTTP狀態碼550產生的原因與解 排除HTTP狀態碼550產生的原因與解 Feb 20, 2024 am 09:49 AM

探索HTTP狀態碼550的原因及解決方法引言:在網路通訊中,HTTP狀態碼扮演著重要的角色,用來表示伺服器處理請求的結果。其中,HTTP狀態碼550是一種相對較少見的狀態碼,通常與伺服器拒絕執行請求相關。本文將探討HTTP狀態碼550的原因,並提供解決方法。一、HTTP狀態碼的基本概念在了解HTTP狀態碼550之前,我們先來簡單了解HTTP狀態碼的基本概

Lock wait timeout exceeded; try restarting transaction - 如何解決MySQL報錯:事務等待逾時 Lock wait timeout exceeded; try restarting transaction - 如何解決MySQL報錯:事務等待逾時 Oct 05, 2023 am 08:46 AM

Lockwaittimeoutexceeded;tryrestartingtransaction-如何解決MySQL報錯:事務等待逾時在使用MySQL資料庫時,有時可能會遇到一個常見的錯誤:Lockwaittimeoutexceeded;tryrestartingtransaction,該錯誤表示事務等待逾時。這個錯誤通常發生在並且

See all articles