当前位置: 首页 > news >正文

mysql修改表的存储引擎(myisam=innodb)【转】

修改表的存储引擎myisam<=>innodb

 

查看表的存储引擎
mysql> show create table tt7;
+-------+-------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                            |
+-------+-------------------------------------------------------------------------------------------------------------------------+
| tt7   | CREATE TABLE `tt7` (
  `id` int(10) default NULL,
  `name` char(10) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 | 
+-------+-------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

查看表的数据量
mysql> select count(1) from tt7;
+----------+
| count(1) |
+----------+
| 16777216 | 
+----------+
1 row in set (0.00 sec)

 

方法一:


直接更改存储引擎
mysql> alter table tt7 engine=innodb;
Query OK, 16777216 rows affected (2 min 39.80 sec)
Records: 16777216  Duplicates: 0  Warnings: 0


方法二:

 

把方法一中的存储引擎改回myisam
mysql> alter table tt7 engine=myisam;
Query OK, 16777216 rows affected (27.09 sec)
Records: 16777216  Duplicates: 0  Warnings: 0

从这里也可以看出myisam表要比innodb表快很多

 

创建个和tt7同样表结构的表
mysql> create table tt7_tmp like tt7;
Query OK, 0 rows affected (0.02 sec)

 

tt7_tmp作为中间结果集
mysql> insert into tt7_tmp select * from tt7;
Query OK, 16777216 rows affected (27.20 sec)
Records: 16777216  Duplicates: 0  Warnings: 0

 

删除原表的数据
mysql> truncate table tt7;
Query OK, 16777725 rows affected (0.18 sec)

 

这回更改原表的存储引擎
mysql> alter table tt7 engine=innodb;
Query OK, 0 rows affected (0.06 sec)
Records: 0  Duplicates: 0  Warnings: 0

速度很快就完成了

 

再把中间结果集的数据导回原表中
mysql> insert into tt7 select * from tt7_tmp;
Query OK, 16777216 rows affected (2 min 0.95 sec)
Records: 16777216  Duplicates: 0  Warnings: 0

 

删除中间表
mysql> drop table tt7_tmp;


测试结果:

方法二比较快一点,但是数据量要是比较大的话,方法二就要采用化整为零的分批操作的方式,否则insert操作将会具耗时,并产生大量的undo日志。

如果是小表的话(500M以内,根据自己系统的硬件环境),采用方法一就可以
如果是大表的话,那就采用方法二+批量的方式


如果是批量更改表的存储引擎

用于生成变更的SQL语句:
SELECT CONCAT('ALTER TABLE ',table_name,' ENGINE=InnoDB;') FROM information_schema.tables WHERE table_schema='db_name' AND ENGINE='myisam';

用于生成检查表的SQL语句:
SELECT CONCAT('CHECK TABLE ',table_name) FROM information_schema.tables WHERE table_schema='db_name';


根据自己系统配置修改如下参数,以加快变更速度(记得以前的值,一会还得改回来)
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;


------end-------

转自

mysql修改表的存储引擎(myisam<=>innodb) - CSDN博客
http://blog.csdn.net/wyzxg/article/details/7412969

相关文章:

  • spring boot系列(七)spring boot 使用mongodb
  • [WCF安全系列]谈谈WCF的客户端认证[用户名/密码认证]
  • 别说国产虚拟化不行,现在国内虚拟化的主流趋势是国产化
  • JavaOne大事纪:IBM谈OpenJ9和Open Liberty
  • 只有坚持才能学好linux系统
  • 一句代码实现批量数据绑定[上篇]
  • 设置样式-----背景和边框
  • Python垃圾回收机制
  • 在linux系统上文件传输的小技巧
  • mysql主从复制的步骤
  • 随笔分类整理
  • python xlwt 设置 格式
  • 《JavaScript权威指南第六版》学习笔记-语句
  • Parallels Desktop和VM里体验Ubuntu18.04LTS(2018.9重编版)
  • android压力测试命令monkey详解【转】
  • [iOS]Core Data浅析一 -- 启用Core Data
  • angular2 简述
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • bootstrap创建登录注册页面
  • C++11: atomic 头文件
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • exif信息对照
  • Flex布局到底解决了什么问题
  • HTTP中GET与POST的区别 99%的错误认识
  • JavaScript服务器推送技术之 WebSocket
  • js算法-归并排序(merge_sort)
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • Spring Cloud Feign的两种使用姿势
  • Sublime text 3 3103 注册码
  • 工作中总结前端开发流程--vue项目
  • 移动端 h5开发相关内容总结(三)
  • AI算硅基生命吗,为什么?
  • ​卜东波研究员:高观点下的少儿计算思维
  • ​插件化DPI在商用WIFI中的价值
  • ​如何在iOS手机上查看应用日志
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • ​香农与信息论三大定律
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • #100天计划# 2013年9月29日
  • (3)(3.5) 遥测无线电区域条例
  • (3)选择元素——(17)练习(Exercises)
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (数据结构)顺序表的定义
  • (五)c52学习之旅-静态数码管
  • (转)linux 命令大全
  • (转)拼包函数及网络封包的异常处理(含代码)
  • .Net IOC框架入门之一 Unity
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .NET中winform传递参数至Url并获得返回值或文件