1 如何并行执行。

数据库里有一个数据量非常大的表,当对这个表进行alter的时候,这时候该表是只读的,由于数据量很大alter时间很长,如果这时候有insert或update操作,有什么办法在这期间可以进行insert或update操作?

MySQL在被alter时是可以insert和update的,但是操作会被延迟。以下我引用MySQL官网的解释:

*“ALTER TABLE运行时会对原表进行临时复制,在副本上进行更改,然后删除原表,再对新表进行重命名。在执行ALTER TABLE时,其它用户可以阅读原表,但是对表的更新和修改的操作将被延迟,直到新表生成为止。新表生成后,这些更新和修改信息会自动转移到新表上。

注意,如果您在执行ALTER TABLE时使用除了RENAME以外的选项,则MySQL会创建一个临时表。即使数据并不需要进行复制(例如当您更改列的名称时),MySQL也会这么操作。对于MyISAM表,您可以通过把myisam_sort_buffer_size系统变量设置到一个较高的值,来加快重新创建索引(该操作是变更过程中速度最慢的一部分)的速度。

如果您使用ALTER TABLE tbl_name RENAME TO new_tbl_name并且没有其它选项,则MySQL只对与table tbl_name相对应的文件进行重命名。不需要创建一个临时表。(您也可以使用RENAME TABLE语句对表进行重命名。”*

所以可以看出MySQL在alter时是复制表结构进行的,所以我建议你一个可以节省时间的方案:

1、create table_new ,并且包含去掉了2个多余字段+新增5字段

2、insert into table_new select * from table 复制所有的数据到新的表结构里

3、drop table ; rename table_new to table; 删掉就表,并将新表名字改成原表名

当然,当大表的alter,我建议你还是放在较少人访问的时候去处理(比如:凌晨的时候)

mysql alter table 速度慢_mysql问题: alter导致速度慢 | 学步园相关推荐

  1. 在线打mysql代码_mysql 在线alter table要留神_mysql

    mysql 在线alter table要小心 mysql 5.6之前, alter table操作对可用性有巨大的冲击(除了纯改表名.不影响任何数据的alter table).它的原理是, 0. al ...

  2. mysql alter table 速度慢_MySQL中ALTER TABLE时的性能问题

    当对于一个大表进行ALTER TABLE的时候,性能问题就产生了.MySQL大部分改动的步骤如下:根据新的表结构创建一个空表,从旧表中把数据取出来插入到新表中,在删除旧表.这是个非常漫长的过程.许多人 ...

  3. alter在MySQL中是什么意思_MySql之ALTER命令用法详细解读(转)

    本文详细解读了MySql语法中Alter命令的用法,这是一个用法比较多的语法,而且功能还是很强大的. USE learning;(自己要提前建好) CREATE TABLE student(id IN ...

  4. mysql drop table 释放空间_MySQL删除数据几种情况以及是否释放磁盘空间【转】

    MySQL删除数据几种情况以及是否释放磁盘空间: 1.drop table table_name 立刻释放磁盘空间 ,不管是 Innodb和MyISAM ; 2.truncate table tabl ...

  5. mysql drop table很慢_MYSQL缓慢的drop table 操作_MySQL

    大家都知道,Ext3并不是最有效的文件系统,例如,删除文件会非常缓慢(那真是一个痛苦的过程,不是吗老兄?),造成大量的随机I / O.然而事实上,有时候它比你想象的更能影响MySQL的性能.那么,什么 ...

  6. mysql 注册驱动_Mysql注册驱动三种方法 | 学步园

    考量了许久,决定把最近学的jdbc坐下总结,慢慢来吧,一天总结一小点,既然拖了那么久. 好,下面开始总结.(这里以mysql数据库为例) 首先就要说的是jdbc中注册驱动,首先导入对应的包,例如mys ...

  7. mysql 双引号报错_MySQL 双引号导致ERROR 1054 (42S22) at line 1: Unknown column

    问题现象 发现监控进程获取MySQL数据的时候报错导致监控进程报错: mysql: [Warning] Using a password on the command line interface c ...

  8. eclipse链接mysql数据池配置_Eclipse中配置Tomcat的数据库连接池 | 学步园

    前提是把需要的msutil.jar mssqlserver.jar msbase.jar mssqlserver4v65.jar 放到tomcat/common/lib下 1.把数据库JDBC驱动拷贝 ...

  9. mysql更改数据语句6_MySQL的SQL语句 - 数据定义语句(6)- ALTER TABLE 语句(1)

    ALTER TABLE 语句 ALTER TABLE更改表的结构.例如,可以添加或删除列.创建或销毁索引.更改现有列的类型.重命名列或表本身.还可以更改表特性,例如用于表或表注释的存储引擎. ●要使用 ...

  10. MySQL中alter table range partition

    最近在用MySQL开发新功能时,使用到了alter table range partition的功能,在此总结下mysql innodb支持的alter table range partition相关 ...

最新文章

  1. 连云港职业技术学院有计算机系吗,连云港职业技术学院电子信息工程技术专业...
  2. 数据操纵语言(DML)
  3. 从视觉检测窥探人类大脑和数字大脑的差别
  4. 易语言 服务器抓包,易语言抓包获得地址实现TP路由器登陆的代码
  5. 有关Java 锁原理
  6. 图形的花样翻转(洛谷P1205题题解,Java语言描述)
  7. Object_C与JavaScript交互使用总结
  8. Linux之chmod命令
  9. 全局配置_中兴天机配置公布:智汇屏+全局黑暗模式
  10. SNOI2017 礼物
  11. 支持向量机(Support Vector Machine,SVM)—— 线性SVM
  12. vue基础-25-vue的基础面试知识
  13. 工程伦理2021秋期末考答案|网课期末考答案|学堂在线|清华大学李正风教授
  14. java还原混淆代码_飘云阁安全论坛如何还原混淆加密的JAVA代码 - Powered by Discuz!...
  15. 一看就懂:正则表达式
  16. Windows 中剪贴板的操作
  17. Bluefish 1.1.3
  18. 【uva12345】Dynamic len
  19. 计算机桌面体验,如何安装win10的桌面体验功能?
  20. 马踏棋盘问题的程序c语言,C语言马踏棋盘

热门文章

  1. itext7中文开发文档(二)
  2. java restlet 教程_java – Restlet Protocol.FILE用法
  3. 为知笔记linux输入中文,为知笔记wiznote无法输入中文,fcitx输入法问题解决
  4. 如何对接GN EDI系统?
  5. 力软敏捷开发框架7.0.6源码
  6. 【C#】Newtonsoft.Json 常用方法总结
  7. html 设计页面,HTML5网页设计
  8. p6s与onvif_大华的录像机添加海康摄像头,使用了onvif协议,为啥也添加不进去?...
  9. python3菜鸟教程
  10. cr3格式是什么意思_如何用PS导入佳能CR3格式图片?