mysql之修改表引擎
刚入门mysql的时候,对innodb引擎和myisam引擎没有很好的理解,所以表引擎用的基本上就是myisam,反正也不懂哪一个好,不过有人给我灌输“如果查询多的话,myisam比innodb要快得多”。现在想想当时是有多蠢!
场景
当时项目中有一张会员表,王二,也就是我,愚蠢的认为会员表相对来说,读频率要高于写频率,所以为了“性能”,果断的选择了myisam引擎。后来,后来项目正式上线后,就悲剧了,数据库经常发生死锁,弄得后来使用`kill
来杀掉死锁的sql查询,现在回首往事,真是不堪啊!
果然,今天再次读《高性能mysql》中关于引擎简介一节时,才隐隐约约知道了什么,“王二,你个sb”,对,就是这样,我心里默默骂着自己。
不要轻信“myisam比innodb快”的经验之谈。
看吧,作者告诉你了,到底什么才是正确的。所以,“在没有特殊需求时,表选择innodb引擎”!
当然了,为了解决这个困扰了许久的问题,最后终于知道myisam是表级锁,这样在频繁的读写时,就会发生大量的读锁无法获取到资源。于是决定把myisam改为innodb引擎,当然在做这个过程时,依然非常可怕!
由于无知,王二,也就是我,直接通过navicat中进行了修改,当时看着navicat假死的状态,差点以为项目又要挂掉了,过了很久很久,才从奄奄一丝的状态恢复了元气。好吧,我当时吓得有点半死。
今天才知道了答案:
表在修改引擎时会花费大量时间。mysql会按行将数据从原表复制到一张新表中,在复制期间可能会消耗系统所有的IO能力,同时原表上回加上读锁。所以,在繁忙的表上执行此操作要特别小心。
解决方案
mysql> show table status like 'girl' \G
mysql> create table boy like girl;
mysql> show table status like 'boy' \G
mysql> alter table boy engine=innodb;
mysql> insert into boy select * from girl;
mysql> show table status like 'boy' \G
mysql> select * from boy;
原来是需要这样做的,先创建另外一张表,再将复制数据。
大数据量时
mysql> start transaction;
mysql> insert into boy select * from girl where id between 1 and 2;
mysql> commit;
mysql> select * from boy;
例子基本上都是书中给的,所以我不是我原创的,给自己积累一点知识。
相关文章
- mysql之死锁
写在最后
那么人生何处不爬虫,爬虫请标http://blog.csdn.net/qing_gee
学而不思则罔,思而不学则殆!
mysql之修改表引擎相关推荐
- mysql 修改表 引擎,mysql如何修改表类型(表引擎)
参考阅读:http://www.manongjc.com/article/1205.html 最近遇到一个修改 MySQL 表类型的问题,以前在 phpmyadmin 管理 mysql 数据库时,建立 ...
- MYSQL的修改表结构SQL语句
MYSQL的修改表结构SQL语句: -- 查看创表语句 SHOW CREATE TABLE t_login; -- 查看表结构 desc t_login1; -- 增加列 ALTER TABLE t_ ...
- mysql批量修改表名前缀
mysql中修改表名前缀的语句为:alert table 旧表名 rename to 新表名: mysql没有直接批量修改表名的方法,但是我们可以通过批量生成修改语句来达到批量修改表名的效果. 代码: ...
- MySQL 批量修改表名
MySQL 批量修改表名 1.执行查询SQL 2.执行修改SQL 功能: 将数据库 jeecg-boot 中的表名前缀是 ACT_ 开头的表名替换为 CAMUNDA_ACT_ 1.执行查询SQL -- ...
- mysql批量修改表名、删除表
mysql批量修改表名 第一步:得到所有需要修改的表名和对于得修改表名语句 SELECT CONCAT( 'ALTER TABLE ', table_name, ' RENAME TO ', REPL ...
- MySQL如何修改表的储存方式_修改mysql默认存储引擎的方法
修改mysql默认存储引擎的方法,供大家学习参考. 先来了解一下mysql存储引擎: mysql服务器采用了模块化风格,各部分之间保持相对独立,尤其体现在存储架构上.存储引擎负责管理数据存储,以及my ...
- mysql在线修改表结构大数据表的风险与解决办法归纳
整理这篇文章的缘由: 互联网应用会频繁加功能,修改需求.那么表结构也会经常修改,加字段,加索引.在线直接在生产环境的表中修改表结构,对用户使用网站是有影响. 以前我一直为这个问题头痛.当然那个时候不需 ...
- MySQL查看修改存储引擎总结
本文总结了MySQL下查看.修改存储引擎的一些方法.测试.验证环境为MySQL 5.6 ,如有差异,请以实际版本为准 1:查看MySQL的存储引擎信息 1.1 使用show engines命令. Su ...
- Mysql之修改表结构
mysql 修改表结构,字段等信息 一.查看表信息 1:查看建表语句 show create table test_a; 2:查看表字段信息 DESC test_a; 二.建表语句 CREATE TA ...
最新文章
- C++中的explicitkeyword
- jquery中如何以逗号分割字符串_百度知道
- 企业选择网站建设能够对自身带来哪些作用?
- python需要php吗-C、C+、Java、PHP、Python分别用来开发什么?
- python图片处理裁剪大小、旋转、镜像
- #研发解决方案#数据移山:接入、迁移、同步一站式
- 概率论-2.4 常用离散分布(待补充期望方差证明)
- #189 stat(动态规划)
- 使用ASP.NET AJAX Control Toolkit中的NoBot控件拒绝垃圾发布程序 【转载】
- win7下部署docker教程(三步搞定)
- 牛客网——Java刷题篇
- 研发主管接私活被辞退,法院判决公司赔偿20.7万元
- 魔兽世界私服架设 服务器架设简易教程
- 推荐一个可以连gmail的邮箱
- c语言.jpg图片转成数组_如何把PDF图片转成JPG?两个方法快速搞定PDF转图片!
- ZZULIOJ:1001植树问题
- 二叉树(Binary Tree,BT)的概念和性质
- vue 什么是渐进式 响应式 意思。Vue常用的指令。VUE:跨域设置。vue router 新窗口。$router.push。
- Java小游戏------飞翔的小鸟
- K - Period(周期)
热门文章
- postgresql 远程用户_liunx环境下安装PostgresSQL,开启远程连接
- 从oracle中读取图片,Pb从oracle中读取和保存图片
- python getostime_python中sys,os,time模块的使用(包括时间格式的各种转换)
- mysql金库模式_Python vault-anyconfig包_程序模块 - PyPI - Python中文网
- 小程序内容审核违规过滤,在小程序使用security.msgSecCheck
- OC 的反射机制以及使用场景
- swif 在字符串中查找特定字符索引以及改变字符串的指定位置的颜色 字体大小
- Eureka服务注册中心
- cacti监控linux和windows磁盘IO
- spring @component的作用