首页 / MYSQL / MySQL:在大表中添加一个字段
MySQL:在大表中添加一个字段
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL:在大表中添加一个字段,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1319字,纯文字阅读大概需要2分钟。
内容图文
我有一张约200,000条记录的表格.我想为它添加一个字段:
ALTER TABLE `table` ADD `param_21` BOOL NOT NULL COMMENT 'about the field' AFTER `param_20`
但它似乎是一个非常繁重的查询,它需要很长时间,即使在我的Quad amd PC上有4GB的RAM.
我在windows / xampp和phpMyAdmin下运行.
在添加字段时,mysql是否与每条记录都有业务往来?
或者我可以更改查询,以便更快地进行更改吗?
解决方法:
几乎在所有情况下,MySQL都会在ALTER **期间重建表.这是因为基于行的引擎(即所有这些引擎)必须这样做才能以正确的格式保留数据以进行查询.这也是因为您还可以进行许多其他更改,这些更改还需要重建表(例如更改索引,主键等)
我不知道你正在使用什么引擎,但我会假设MyISAM. MyISAM复制数据文件,进行任何必要的格式更改 – 这相对较快,并且不太可能花费比IO硬件可以获取旧数据文件和新数据文件更长的时间.
重建索引真的是杀手锏.根据您配置的方式,MySQL将:对于每个索引,将索引列放入文件存储缓冲区(可能在内存中但通常在光盘上),使用其filesort()函数对其进行排序(快速排序)通过递归复制两个文件之间的数据(如果它对于内存来说太大),然后根据排序的数据构建整个索引.
如果它不能执行filesort技巧,它就会像在每一行上执行INSERT一样,并依次用每行的数据填充索引块.这非常缓慢,导致远离最佳索引.
您可以在此过程中使用SHOW PROCESSLIST来判断它正在做什么. “通过filesort修复”很好,“使用keycache修复”很糟糕.
所有这些都将使用AT MOST一个核心,但有时也会受到IO绑定(特别是复制数据文件).
**有一些例外,例如在innodb插件表上删除二级索引.
内容总结
以上是互联网集市为您收集整理的MySQL:在大表中添加一个字段全部内容,希望文章能够帮你解决MySQL:在大表中添加一个字段所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。