mysql myisam转innodb的2种方法
mysql myisam转innodb的2种方法
mysql中的myisam和innodb有什么区别。一个好比便利店,一个好比大型购物中心,他们是为了适应不同的场合而存在的。当流量比较小,我们可以用myisam,当流量大时,我们可能会把数据库中的,全部表或者部分表转换成innodb。下面说2种切实可行的方法来完成这种转换。
一,用alter table来实现。
- mysql> alter table merchant engine=innodb;
转换方法很简单。myisam在磁盘上的储存有三个文件,.MYD,.MYI,.frm文件,转换后这三个文件会不会消失呢?innodb中共享表空间或者独立表空间会不增加呢?
- [root@krlcgcms01 test]# ls |grep merhcant|xargs -i du {}
- 12 merchant.frm
- 690 merchant.MYD
- 144 merchant.MYI
上面是转换前的文件大小,转换后.MYD,.MYI消失了。而innodb的共享表空间增加8M.
- [root@krlcgcms01 data]# ls |grep ibdata |xargs -i du -m {}
- 10 ibdata1 //转换前的
- [root@krlcgcms01 data]# ls |grep ibdata |xargs -i du -m {}
- 18 ibdata1 //转换后的
mysql表在磁盘上的存储方式的转换,并不要额外的去转换。这样比较方便。innodb在这里我设置的是共享表空间,这次转换的表的大小不超过1M,但共享表空间自动增加了8M,所以共享表空间的大小,并不是按照表的大小来增加的,是有基数的。我们可以通过innodb_autoextend_increment来设置
二,导出数据,重新建表
1,导出表结构以及数据,删除老表,重新建表
- //方法1,我们可以把把创建这个表的sql拷贝出来,把ENGINE=MyISAM换成,ENGINE=INNODB
- mysql> show create table merchant\G;
- *************************** 1. row ***************************
- Table: merchant
- Create Table: CREATE TABLE `merchant` (
- `btid` int(5) unsigned zerofill NOT NULL auto_increment,
- `btname` varchar(100) NOT NULL,
- `btnote` text,
- PRIMARY KEY (`btid`),
- UNIQUE KEY `btname` (`btname`)
- ) ENGINE=MyISAM DEFAULT CHARSET=utf8
- 1 row in set (0.00 sec)
- //方法2,直接导出表结构,在文件里面替换一个myisam
- mysqldump -udba -p -d test merchant >/tmp/test/mytest/merchant.sql;
2,导出数据
- mysqldump -udba -p --no-create-info test merchant >/tmp/test/mytest/merchant_data.sql;
3,删除老表,重新建表,导入数据,这个就不说了,linux 简单的mysql备份和导入,以及文件的备份和导入
mysql myisam转innodb的2种方法的更多相关文章
- MySQL数据库分表的3种方法
原文地址:MySQL数据库分表的3种方法作者:dreamboycx 一,先说一下为什么要分表 当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了.分表的目 ...
- mysql 中添加索引的三种方法
原文:http://www.andyqian.com/2016/04/06/database/mysqleindex/ 在mysql中有多种索引,有普通索引,全文索引,唯一索引,多列索引,小伙伴们可以 ...
- MySql MyISAM和InnoDB的区别
MyISAM:这个是默认类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的 顺序访问方法) 的缩写,它是存储记录和文件的标准方法. ...
- MySQL MyISAM和InNodb备份与恢复技巧
1. 为什么要备份数据库 对数据库来说,最重要也最容易被忽视的就是备份.由于不可预测性,偶然的事件可能会导致非常惨重的损失. 数据越是重要,数据的变化越频繁,备份越发需要经常进行. 备份周期根据不同业 ...
- Mysql MyISAM与InnoDB 表锁行锁以及分库分表优化
一. 两种存储引擎:MyISAM与InnoDB 区别与作用 1. count运算上的区别: 因为MyISAM缓存有表meta-data(行数等),因此在做COUNT(*)时对于一个结构很好的查询是不需 ...
- MySQL MyISAM和Innodb表生成序列
目录 背景 分析 测试 结论 背景 应用端需要生成依次递增的序列来做流水序号等,方案有1.redis /MySQL SEQUENCE引擎生成序列:2.MySQL中myisam表 replace int ...
- windows 下mysql每日定时备份的几种方法
第一种:新建批处理文件 backup.dat,里面输入以下代码: 代码如下 复制代码 net stop mysql xcopy "C:/Program Files/MySQL/MySQL ...
- MySQL重置root密码的几种方法(windows+Linux)
重置root密码的方法: windows系统下:1.停止mysql服务:2.新建文件init-root.txt,写上如下内容: update mysql.user set password = pas ...
- MySQL中删除数据的两种方法
转自:http://blog.csdn.net/apache6/article/details/2778878 1. 在MySQL中有两种方法可以删除数据: 一种是delete语句,另一种是trunc ...
随机推荐
- 理解css伪类和伪元素
伪类就是可以通过直接添加一个类样式达到同等效果,而伪元素,则需要先添加一个元素,然后在元素上添加样式才能达到同等效果 伪类 :active 向被激活的元素添加样式. :focus 向拥有键盘输入焦点的 ...
- js 客户端打印html 并且去掉页眉、页脚
print() 方法用于打印当前窗口的内容,支持部分或者整个网页打印. 调用 print() 方法所引发的行为就像用户单击浏览器的打印按钮.通常,这会产生一个对话框,让用户可以取消或定制打印请求. w ...
- opacity的背景透明&background中rgba的背景色透明
近期使用css实现了一个loading旋转加载的图片效果,类似gif动画 过程中,需要透明背景,但是图片不要透明 只要背景透明!只要背景透明!只要背景透明! 这里对透明模糊了,两种写法,模糊了 A: ...
- 用深度学习(DNN)构建推荐系统 - Deep Neural Networks for YouTube Recommendations论文精读
虽然国内必须FQ才能登录YouTube,但想必大家都知道这个网站.基本上算是世界范围内视频领域的最大的网站了,坐拥10亿量级的用户,网站内的视频推荐自然是一个非常重要的功能.本文就focus在YouT ...
- Centos6.4三种更改hostname的方法之间的对比
首先,利用hostname命令查看一下当前主机的主机名,在终端输入hostname,会发现显示的是完整的主机名称(主机名.域名),其中主机名与进入终端后:登录名@主机名,显示的一致,如下图所示: 其次 ...
- python 豆瓣采集
新手今天刚学python~~~ 有点凌乱~勉强看吧 只能算是给新手看看,见谅 简单版本的 豆瓣采集美图~~~~~~ 美女天天有 有木有~~~ python 3.4 sqlite3 BeautifulS ...
- AccessibilityService+WindowManager+SurfaceView开系统权限
一种通过自动获取用户权限增强产品体验的方法 本文是基于辅助功能+悬浮窗+SurfaceView来实现自动获取用户权限的具体方案设计与实现.辅助功能抢红包插件相信大家并不陌生,但是微信官方不允许,但是在 ...
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](五)
前言 Hi,大家好,我是Rector 时间飞逝,一个星期又过去了,今天还是星期五,Rector在图享网继续跟大家分享系列文本:一步一步创建ASP.NET MVC5程序[Repository+Autof ...
- 52e174ef38c96afbbeabe55d2ec53622 我知道这是什么
52e174ef38c96afbbeabe55d2ec53622 我知道这是什么52e174ef38c96afbbeabe55d2ec53622 我知道这是什么52e174ef38c96afb ...
- Linux 下非root用户使用docker
Linux 下非root用户使用docker 通常我们使用linux系统的时候,最好是不要直接使用root账号,但是使用Docker的时候,默认又是不能使用非root用户的,关于原因,官方说法如下: ...