MySql事务无法回滚的原因_MySQL
使用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中的配置也是比较关键的,良好的配置,能够有效的加速你的应用。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

无线投屏为什么会连接不成功呢?有些小伙伴反映在使用无线投屏的时候,会出现连接失败的情况,这是怎么回事呢?无线投屏连接失败怎么办?请确认您的电脑、电视和手机是否连接在同一个WiFi网络上。投屏软件要求设备在同一网络下才能正常使用,而快点投屏也不例外。因此,请您迅速检查一下您的网络设置。确定是否支持投屏功能很重要。智能电视和手机通常都支持DLNA或AirPlay功能。如果不支持投屏功能,就无法传屏。确认设备是否正确连接:在同一WiFi下的设备可能有多个,确保连接的是想要实现同屏的设备。4、确保网络的

在局域网内连接打印机启动打印作业时会出现一些小状况,例如偶尔会出现“wpsoffice无法启动打印作业……”的问题,造成无法打印出文件等,耽误我们的工作和学习,造成不好的影响,下面就告诉大家,怎么解决wpsoffice无法启动打印作业的问题?当然你可以升级软件或是升级驱动等方案解决,但是这样花费你好长的时间,下面我就给大家较少一种分分钟可以搞定的方案。首先注意到wpsoffice无法启动打印作业,导致无法进行打印。要解决这个问题,需要逐一排查。另外,确认打印机已经开机并连接好。一般连接不正常会造

PHP500错误全面指南:原因、诊断和修复在PHP开发过程中,我们经常会遇到HTTP状态码为500的错误。这种错误通常被称为"500InternalServerError",它是指在服务器端处理请求时发生了一些未知的错误。在本文中,我们将探讨PHP500错误的常见原因、诊断方法以及修复方法,并提供具体的代码示例供参考。1.500错误的常见原因1.

使用苹果手机时,一些用户可能会遇到充电速度缓慢的问题。造成这种问题的原因有很多种,可能是由于充电设备功率过低,设备故障,或是手机的USB接口出现问题,甚至是电池老化等因素导致的。苹果手机充电很慢是什么原因答:充电设备问题,手机硬件问题,手机系统问题。1、用户在使用功率比较低的充电设备时,手机的充电速度就会很慢。2、使用第三方的劣质充电器或者是充电线也会导致充电速度很慢。3、推荐用户使用官方的原装充电器,或者是更换正规的有认证的大功率充电器。4、用户的手机硬件出现问题,比如说手机的usb接口接触不

相信不少朋友都遇到过系统蓝屏的问题,不过不知道win11蓝屏原因是什么,其实导致系统蓝屏的原因是有很多的,我们可以依次排查进行解决。win11蓝屏原因:一、内存不足1、运行太多软件或者游戏消耗内存太大的时候可能发生。2、尤其是现在win11存在内存溢出的bug,所以很有可能遇到。3、这时候可以尝试设置一下虚拟内存来解决,不过最好的方法还是升级内存条。二、CPU超频过热1、CPU的问题原因其实和内存差不多。2、一般会发生在使用后期、建模等软件,或者玩大型游戏时发生。3、CPU的消耗过大就会出现蓝屏

最近有朋友在更新系统后,遇到了win11自动关机的问题,很多情况下都会在玩游戏的时候发生,不知道是什么原因导致的。其实这可能是由于电脑配置不足,或者系统故障造成,下面一起来看看原因及解决方法吧。win11自动关机什么原因一、配置不足1、Windows11系统对于cpu和内存要求比Windows10要高一些。2、尤其是在运行大型游戏等任务时,极易出现自动关机的情况。3、用户可以试着还原到自动关机前的使用情况,右键点击开始菜单图标,打开“任务管理器”页面。4、我们在这个页面查看一下CPU、内存、磁盘

探索HTTP状态码550的原因及解决方法引言:在网络通信中,HTTP状态码扮演着重要的角色,用于表示服务器处理请求的结果。其中,HTTP状态码550是一种相对较少见的状态码,通常与服务器拒绝执行请求相关。本文将探索HTTP状态码550的原因,并提供解决方法。一、HTTP状态码的基本概念在了解HTTP状态码550之前,我们先来简单了解一下HTTP状态码的基本概

Lockwaittimeoutexceeded;tryrestartingtransaction-如何解决MySQL报错:事务等待超时在使用MySQL数据库时,有时可能会遇到一个常见的错误:Lockwaittimeoutexceeded;tryrestartingtransaction,该错误表示事务等待超时。这个错误通常发生在并
