MySQL从MyISAM引擎转换到InnoDB引擎需要注意的地方

如何在MySQL中选择使用InnoDB还是MyISAM引擎? MySQL存储引擎选择指南:InnoDB与MyISAM的核心区别在于事务支持、锁机制和数据安全性。InnoDB支持事务、行级锁和崩溃恢复,适合高并发写入、数据完整性要求高的场景(如电商、金融系统)。MyISAM仅提供表级锁,读写性能较好但缺乏事务支持,适用于读多写少的静态数据。现代应用建议优先选择InnoDB,仅在特殊场景考虑MyISAM。转换引擎时需注意备份数据并检查外键约束。 阅读详情

MySQL从MyISAM引擎转换到InnoDB引擎需要注意的地方

来源:易贤网   阅读:1852 次  日期:2015-01-09 11:48:13

温馨提示:易贤网小编为您整理了“MySQL从MyISAM引擎转换到InnoDB引擎需要注意的地方”,方便广大网友查阅!

分析 当了解完两种引擎的不同之处,很轻松的就能知道有哪些关键点了。

总的来说,从MyISAM转向InnoDB的注意事项有:

1、MyISAM的主键索引中,可以在非第一列(非第一个字段)使用自增列,而InnoDB的主键索引中包含自增列时,必须在最前面;这个特性在discuz论坛中,被设计用于“抢楼”功能,因此,若有类似的业务,则无法将该表从MyISAM转成InnoDB,需要自行变通实现(我们则是将其改到Redis中实现);

2、不带条件频繁统计全表总记录数时(SELECT COUNT(*) FROM TAB),InnoDB相对较慢,而MyISAM则飞快;不过,如果是基于索引条件的统计,则二者相差不大;

3、InnoDB在5.6以前不支持全文索引,不过这个相信无所谓,没什么人会在MySQL里直接跑全文索引,尤其是对中文的全文索引(前阵子有开发同学提需求直接被我否了),确实有需要的话,可以采用Sphinx、Lucene等其他方案实现;

4、一次性导入大量数据并且后续还要进行加工处理的,可以先导入到MyISAM引擎表中,经过一通加工处理完后,再导入InnoDB表(我曾经在业务中用此方法提高数据批量导入及处理效率);

5、InnoDB不支持LOAD TABLE FROM MASTER语法(不过应该也很少人使用吧);

从MyISAM转成InnoDB可以享受的好处则有:

1、完整事务特性支持,以及更高的数据并发存取效率,即更高的TPS;

2、数据库实例异常重启后,InnoDB表能自动修复,而且速度相对更快,而MyISAM需要被触发才能修复,且相对耗时可能多4~5倍甚至更多;

3、更高的数据读取性能,因为InnoDB把数据及索引同时缓存在内存中,而MyISAM只缓存了索引;

4、InnoDB支持外键(不过在MySQL中,应该很少人用到外键);

两个引擎间的重要区别详情见下:

MyISAM引擎的特点:

1、堆组织表;

2、不支持事务;

"tn-Powered-by-XIUMI">3、数据文件和索引文件分开存储;

"tn-Powered-by-XIUMI">4、支持全文索引;

"tn-Powered-by-XIUMI">5、主键索引和二级索引完全一样都是B+树的数据结构,只有是否唯一的区别(主键和唯一索引有唯一属性,其他普通索引没有唯一属性。B+树叶子节点存储的都是指向行记录的row pointer);

6、有特殊计数器记录当前记录数;

7、不支持Crash recovery;

8、索引文件很容易损坏;

InnoDB引擎的特点

1、索引组织表;

2、支持事务;

"tn-Powered-by-XIUMI">3、数据文件和索引文件存储在同一个表空间中;

"tn-Powered-by-XIUMI">4、在5.6以前,不支持全文索引;

"tn-Powered-by-XIUMI">5、主键和二级索引数据结构一样都是B+树,但叶子节点存储的键值不一样(主键的叶子节点存储整行数据,因此也称为聚集索引;而二级索引的叶子节点存储的是主键的键值)

5、支持Crash recovery;

6、相同数据量时,InnoDB表空间文件大小约为MyISAM引擎的1.5~2倍;


MyISAM 和 InnoDB的区别 MySQL中MyISAM和InnoDB的主要区别:InnoDB支持事务、行级锁、外键约束和崩溃恢复,采用聚簇索引,适合高并发写入场景;MyISAM仅支持表级锁,无事务功能,索引与数据分离存储,适合读多写少的简单查询。InnoDB是现代应用的首选,而MyISAM逐渐被淘汰。建议新项目优先使用InnoDB,并可通过ALTER TABLE命令切换引擎。 阅读详情

相关推荐

mysql 默认引擎innodb 初探(一)

mysql总概简述 mysql 跨平台,能够运行在当前所有主流系统上;与oracle不同,mysql被设计为一个单进程多线程架构;

走一步再走一步 3835

19.MySQL整改-MyISAM存储引擎变更为INNODB

mysql myisam存储引擎变更为Innodb

weixin_43346403的博客 1041

MySQL存储引擎–如何将MyISAM转换为InnoDB

大型网站发展缓慢的最大原因之一是他们的数据库没有得到优化。许多较老的站点仍在其数据库中使用MyISAM存储引擎。近年来,InnoDB表现出了更好的性能和更可靠的性能。使用InnoDB而不是MyISAM的一个重要原因是缺少完整的表级锁定。这使您的查询处理得更快。 InnoDB具有行级锁定。MyISAM只有完整的表级锁定。 InnoDB具有所谓的引用完整性,它涉及到支持外键(RDBMS)和关系约束,而MyISAM没有。 InnoDB支持事务,这意味着您可以提交和回滚。MyISAM没有。 InnoDB更可靠,因

Programming Talk 2367

MySQL数据引擎InnoDB和MyISAM互相转换

MySQL(或者社区开源fork的MariaDB)5.5以上支持InnoDB引擎,并将其作为默认数据库引擎。InnoDB带来很多改进,但是对系统资源占用明显增加,对于还在128MB~512MB内存VPS挂WordPress博客的筒子们来说,InnoDB是不合适的,还是得换回MyISAM这批老马! 本文讲解从InnoDB引擎转换成MyISAM引擎,看完本文,你应该懂得如何操作以把M...

CHJ_20160630的博客 406

将MySQL从MyISAM转换成InnoDB错误和解决办法

后来在做WordPress,一开始还不知道原来WordPress用的是InnoDB数据引擎,于是在原来的数据库里面就建了一个数据库,一开始也没发觉问题,安装,导入sql,都没问题,当时也没多想。直到这几天因为又要装多一个WordPress,用phpmyadmin访问数据库多一点,问题来了。老是一访问WordPress的数据库,就弹出错误提示“Mysqld-nt.exe应用程序错误:“0x005346c4”指令引用的“0x00786000”内存,该内存不能为读…”,然后就MySQL服务也停了,登陆不了,整个数据库都访问不了。 图1 设置数据库类型  纠结了挺久,也忘了是看到什么文章触发了灵感,

Mac上IDEA的PlantUML插件报错‘找不到Graphviz’?手把手教你用Homebrew搞定(附阿里云镜像避坑)

本文详细解决了Mac上IDEA的PlantUML插件报错‘找不到Graphviz’的问题,通过Homebrew安装Graphviz并配置阿里云镜像源,特别针对Apple Silicon芯片用户提供了优化方案。文章还涵盖了IDEA中PlantUML插件的正确配置和常见问题排查,帮助开发者高效使用PlantUML进行UML图表设计。

weixin_42619742的博客 468

你应该把MYISAM迁移到INNODB吗?

原文链接:http://www.mysqlperformanceblog.com/2009/01/12/should-you-move-from-myisam-to-innodb/ There is significant portion of customers which are still using MyISAM when they come to us, so one of the b...

weixin_30624825的博客 136

Ren’py教程《从入门到精通》

Ren’py是什么?Ren'py是一款用于制作视觉小说、冒险游戏、galgame的游戏制作工具,被来自世界各地的数千名创作者使用。Ren'py的名字由Ren’ai和Python混合而成,而Python也是Ren'py所使用的环境语言。Ren'py可以帮助你使用文字、图像和声音来讲述在计算机和移动设备上运行的交互式故事。这些既可以是视觉小说,也可以是生活模拟游戏。易于学习的脚本语言允许 任何人都可以有效地编写大型视觉小说,而它的Python 脚本足以应对复杂的 模拟游戏。

2302_77140651的博客 1万+

mysql存储引擎MyISAM和InnoDB

MyISAM与InnoDB是mysql目前比较常用的两个数据库存储引擎,MyISAM与InnoDB的主要的不同点在于性能和事务控制上。这里简单的介绍一下两者间的区别和转换方法: MyISAM:MyISAM是MySQL5.5之前版本默认的数据库存储引擎。MYISAM提供高速存储和检索,以及全文搜索能力,适合数据仓库等查询频繁的应用。但不支持事务、也不支持外键。MyISAM格式的一个重要缺陷就是

yihaoawang的专栏 455

Ansys CFX Pre 中 RGP 表的高级配置与优化策略

本文深入探讨了Ansys CFX Pre中RGP表的高级配置与优化策略,旨在帮助用户将仿真从“能用”提升至“精准好用”。文章重点解析了如何根据具体仿真场景,科学设定温度压力范围、选择流体类型,并针对相变等复杂工况实施网格加密与分离建表等关键优化技术,以显著提升计算精度与稳定性。

weixin_29216957的博客 1180

802.1x之EAP-TLS测试方法

CA证书一般是由权威的认证机构发出,用来验证该机构签名的证书,持有CA证书的设备可以验证对端的证书是否由自己信任的机构颁发的。在我们内部使用证书时,我没可以自己充当CA认证机构,管理私钥和CA证书,使用他们签名服务器、客户端证书。2、使用证书请求文件server_csr.pem、CA私钥、CA公钥生成服务器证书(正常情况下自己不拥有CA私钥,是把证书请求文件发给认证机构,由认证机构返回证书)进行802.1x EAP-TLS认证时需要IPC、服务器分别存储CA证书、设备证书、私钥,通过交换证书实现身份验证。

写作是为了更好的思考 2164

mysql myisam转innodb的2种方法

mysql中的myisam和innodb有什么区别,在这儿就不哆嗦了。一个好比便利店,一个好比大型购物中心,他们是为了适应不同的场合而存在的。当流量比较小,我们可以用myisam,当流量大时,我们可能会把数据库中的,全部表或者部分表转换成innodb。下面说2种切实可行的方法来完成这种转换。 一,用alter table来实现。 mysql>altertable...

自强不息 554

深度学习模型轻量化方法之【量化】

量化虽然有着硬件友好和功效提升的特点,但它也引入了模型性能的折衷。因此,设计有效的量化策略需要在模型大小、性能以及运算速度之间做出平衡。随着深度学习算法和硬件加速技术的快速发展,量化方法在使深度网络轻量化和提高部署效率方面持续发挥着重要作用。

m0_73916791的博客 2847

mysql myisam转innodb_转:MySQL从MyISAM引擎转换到InnoDB引擎需要注意的地方

http://www.ynpxrz.com/n896852c2024.aspx分析 当了解完两种引擎的不同之处,很轻松的就能知道有哪些关键点了。总的来说,从MyISAM转向InnoDB的注意事项有:1、MyISAM的主键索引中,可以在非第一列(非第一个字段)使用自增列,而InnoDB的主键索引中包含自增列时,必须在最前面;这个特性在discuz论坛中,被设计用于“抢楼”功能,因此,若有类似的业务,...

weixin_42255060的博客 331

Xilinx实战-深入AXI UART Lite IP核的配置与调试

本文详细介绍了Xilinx FPGA中AXI UART Lite IP核的配置与调试方法,包括Vivado环境下的IP核设置、关键参数优化、寄存器操作及常见问题排查。通过实战案例和代码示例,帮助开发者快速掌握AXI接口的串口通信技术,提升嵌入式系统开发效率。

weixin_29189377的博客 228

[QMT量化交易小白入门]-十二、QMT回测龙头打首板和连板的策略

class a():passA = a() #创建空的类的实例 用来保存委托状态field_list定义了需要的市场数据字段,而类a用于保存交易状态。

木头大左的博客 4760

mysql 导入sql文件 外键报错_MySQL从MyISAM引擎转换到InnoDB引擎需要注意的地方

分析 当了解完两种引擎的不同之处,很轻松的就能知道有哪些关键点了。总的来说,从MyISAM转向InnoDB的注意事项有:1、MyISAM的主键索引中,可以在非第一列(非第一个字段)使用自增列,而InnoDB的主键索引中包含自增列时,必须在最前面;这个特性在discuz论坛中,被设计用于“抢楼”功能,因此,若有类似的业务,则无法将该表从MyISAM转成InnoDB,需要自行变通实现(我们则是将其改到...

weixin_28721917的博客 185

一文吃透 Tools for Applying SAP Notes:从 SNOTE、TCI 到 Solution Manager 与 SAP Cloud ALM

本文系统梳理了SAP技术与运维团队应用SAP Notes的高效工具与方法,涵盖On-Premise与云环境。文章首先阐述了精研SAP Notes工具的必要性,指出其是实施错误修复、法务变更和性能改进的关键载体。随后详细介绍了SNOTE、TCI、Solution Manager、Cloud ALM和Maintenance Planner等核心工具的定位与适用场景,并通过采购异常案例展示了标准更正流程。针对复杂修复场景,文章提出了TCI的批量处理方案,并强调将Note实施纳入变更治理流程的重要性。最后总结了三种

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 354

MyISAM和InnoDB存储引擎的区别

MyISAM和InnoDB存储引擎的区别

wtl666_6的博客 8622

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

mysql 两种存储引擎 MyISAM 和InnoDB

最近在看《High performance Mysql》,提到Mysql的两种存储引擎,总结一下 MyISAM 是MySQL中默认的存储引擎,一般来说不是有太多人关心这个东西。决定使用什么样的存储引擎是一个很tricky的事情,但是还是值我们去研究一下,这里的文章只考虑 MyISAM 和InnoDB这两个,因为这两个是最常见的。下面先让我们回答一些问题:1.你的数据库有外键吗?2.你需要事务支持吗

2858

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

mysql 的innodb和myisam数据库引擎的认识

(原文链接http://apps.hi.baidu.com/share/detail/32830849) mysql 的innodb和myisam数据库引擎的认识,自己总结了一下并引用了网络上的相关测试和应用做如下记录: mysql数据库新加了几个表,结果只有frm文件存在,如果直接复制到别的电脑,这几个表是提示错误的,为什么呢?查了下资料:frm、MYI、MYD分别对应MyISAM表的表结构

hit_hyc的专栏 3985

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

mysql从myisam_将MySQL从MyISAM转换成InnoDB错误和解决办法

原来自己用的是为了装的, 所以在设置database usage(如下图1)的时候按照discuz官方的建议,选的都是Non-Transactional Database Only(只支持MyISAM数据引擎的非事务数据库),用MyISAM数据库,还没涉及到需要InnoDB,因此打算直接不加载INNODB引擎。后来在做WordPress,一开始还不知道原来WordPress用的是InnoDB数据引...

weixin_30884455的博客 894

mysql 修改所有表为myisam_mysql innodb数据库批量转换表引擎为MyISAM的方法

本节内容:mysql数据库引擎转换:innodb批量转换为MyISAM。例子:复制代码 代码示例://连接数据库$host='localhost';$user='mysql_username'; //管理账户$passwd='mysql_password'; //密码$db='wordpressdb'; //数据库名称$link= mysql_connect($host,$user,$pas...

weixin_39847722的博客 572

Mysql存储引擎--InnoDB/Myisam/Memory

Mysql 数据操作:DML 数据定义语言:DDI 数据控制语言:DCL show engines; 查看存储引擎 InnoDB存储引擎 InnoDB mysql 5.6以上 默认的存储方式 支持行级锁,表级锁,外键,事务 保证数据安全 数据的完整性而设置的概念 树tree-加速查询(树形结构(数据+树)+表结构) staff.frm – frame 表结构 staff.ibd innodb da...

小人物的博客 572

通达OA系统myisam转innodb引擎

OA系统切换到linux环境后,性能提升了2-3倍左右,随着公司的发展壮大,办公人员也会越来越多,当人数达到一定数量级别时如1500在线人数已无法支撑公司业务,就需要对系统进行性能提升优化。     当前OA系统采用myisam数据库引擎,该数据库引擎的特点是查询量是主要业务时响应速度很快,myisam是表锁不支持外键。innodb引擎是行锁,并发处理能力更强,针对大量用户同时新建工作流

reblue520的专栏 1195

mysql库类型MyISAM与InnoDB的批量转换

1 use 数据库 2 -- InnoBD 批量转 MyISAM 注意: 数据库名需要 引号"" 3 select CONCAT('alter table ',table_name,' engine=MyISAM;') FROM information_schema.tables WHERE table_schema="数据库" AND ENGINE="InnoDB"; 4 ...

weixin_30631587的博客 398
上一篇: spring3 混合使用 XML 与注解(Annotation)进行 Bean 的配置
下一篇: mysql更改引擎(InnoDB,MyISAM)的方法
javaPie
博客等级 码龄16年 1171粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值