mysql更改表引擎INNODB为MyISAM的方法总结
创建一个中间临时表:
发布日期:2025-04-17 23:42:35
浏览次数:43
分类:精选文章
本文共 1030 字,大约阅读时间需要 3 分钟。
如何将InnoDB表转换为MyISAM表?以下是两种常见方法,并比较它们的优缺点。
方法一:直接更改存储引擎
ALTER TABLE `wp_posts` ENGINE = MyISAM;
这种方法简单直接,但在数据量较大的情况下可能会非常耗时。例如,在我的测试中,16777216条记录需要2分钟多的时间完成。
方法二:分批处理
CREATE TABLE `tt7_tmp` LIKE `tt7`;
- 将原始表的数据复制到临时表中:
- 删除原始表的数据:
- 将数据从临时表复制回原表:
- 最后,修改表的存储引擎:
- 优点:
- 支持事务处理和ACID兼容。
- 行级锁机制,提供更高的并发性能。
- 支持外键约束。
- 数据和索引存放在同一个表空间中,适合大型数据量。
- 缺点:
- 对内存和磁盘空间要求较高。
- 全文索引支持较差。
- 优点:
- 默认存储引擎,适合小型和中等数据量的应用。
- 查找速度较快,特别是对于简单的SELECT查询。
- 数据存储在多个文件中,便于跨平台迁移。
- 缺点:
- 不支持事务处理,无法保证数据原子性。
- 外键约束不支持。
- COUNT(*)操作需要扫描所有记录。
- 修改MySQL配置文件:
- 临时修改配置参数,以加快变更速度,但记得在完成后恢复原来的配置。
INSERT INTO `tt7_tmp` SELECT * FROM `tt7`;
TRUNCATE TABLE `tt7`;
INSERT INTO `tt7` SELECT * FROM `tt7_tmp`;
ALTER TABLE `tt7` ENGINE = InnoDB;
这种方法在数据量较大的情况下性能更优,但需要分批处理,尤其是在处理大量数据时,可能会显著减少事务日志的生成量。
存储引擎对比
InnoDB
MyISAM
性能优化建议
在进行存储引擎变更时,可以通过以下方式优化性能:
SET GLOBAL sort_buffer_size=64*1024*1024;SET GLOBAL tmp_table_size=64*1024*1024;SET GLOBAL read_buffer_size=32*1024*1024;SET GLOBAL read_rnd_buffer_size=32*1024*1024;
在选择存储引擎时,应综合考虑数据量、事务需求、查询类型以及应用场景。InnoDB更适合需要事务支持和大数据量的项目,而MyISAM则适合小型和读取频率高的场景。
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2026年06月13日 20时45分54秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
php mysql优化方法_MySQL优化常用方法
2023-02-27
PHP OAuth 2.0 Server
2023-02-27
PHP pcntl_fork不能在web服务器中使用的变通方法
2023-02-27
php private ,public protected三者的区别
2023-02-27
php PSR规范
2023-02-27
php redis(2)
2023-02-27
PHP Redis分布式锁
2023-02-27
PHP SOAP模块的使用方法:NON-WSDL模式
2023-02-27
PHP SPL标准库-迭代器
2023-02-27
php zookeeper实现分布式锁
2023-02-27
PHP 使用 $_SERVER['PHP_SELF'] 获取当前页面地址及其安全性问题
2023-02-27
php 反射
2023-02-27
PHP 实现N阶矩阵相乘
2023-02-28
php 延迟静态绑定static关键字
2023-02-28
Redis入门
2023-02-28
PHP 截取字符串乱码的解决方案
2023-02-28
php 接口类与抽象类的实际作用
2023-02-28
PHP 插入排序 -- 折半查找
2023-02-28