- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我有一个包含 4 016 515 759
行的表格。我需要将我的 address_id
字段的字段类型从 int
更改为 bigint
,它也是一个 FOREIGN KEY
。
我刚刚测试了这个查询:
SET foreign_key_checks = 0;
ALTER TABLE `my_table` CHANGE address_id address_id bigint;
在具有 6 845 016
行的本地表上 - 需要 14 分钟。我猜生产这 40 亿行需要很长时间。
所以问题是:如何真正快速安全地更新这个?或者我应该复制 my_table
并在此副本上执行 ALTER
然后重命名它吗?
因为停机时间会很长。
最佳答案
编辑:这可能是引擎特定的。
更改具有外键的常用表中的列......你正在进入一个伤害我的 friend 的世界。
如果您在当时实际使用的环境中执行此操作,则整个表将被锁定,直到您的更改完成。为锁定等待超时甚至最大连接错误做好准备。根据您的情况,仅几分钟的变化可能意味着停机。
有些人巧妙地解决了这个问题:
http://www.percona.com/doc/percona-toolkit/2.1/pt-online-schema-change.html
请务必阅读有关外键的部分。
所以...
我个人的方法是避免这样的事情,并试图通过扩大任何可能变得太小和太重要的字段来防止它。所有数字主键等上的无符号双整数。
不过,偶尔,其他人只是踢了一个巨大的变更表,一切都堵塞了,我们达到了最大连接数。很难防止这种情况发生,因为测试不会那么失败:一个简单的测试环境没有那么多流量。
问题是:不可避免的 mysql 重启往往会立即用新结构恢复表。
简短版:
关于MySQL Alter huge table(更改字段类型),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22838998/
将此视为一个理论问题和实际问题。 一个表有 1.000.000 多条用户记录,需要从该表中提取数据,比如 50.000,仅使用 user_id。你希望 IN 表现如何?如果不好,这是唯一的选择还是还有
我需要解决最短路径算法问题(用 C 语言)。 基本上,我得到一个文件,其中包含(稀疏)矩阵的总行数和列数、非零条目(称为门)的数量以及最后这些条目的位置和值(行、列、值) )。在这个迷宫中,我必须找出
我使用 Libgdx 项目生成器创建了我的第一个 LibGDX 项目。然后我在 IntelliJ 中打开了该项目,它要求我在 build.gradle 文件中索引存储库。有问题的远程存储库是: Mav
我有一个服务器端服务,可以向我发送大量 DTO。我需要将它们放入 CellTable 中。大概有 10-200 行,我需要同时看到所有内容。 我有一个服务器端日志,用于跟踪我的服务的最后一个“人造”代
考虑这 3 种模型: # models.py class City(models.Model): name = models.CharField(max_length=50) class In
我有一个巨大的二进制矩阵,例如 100000 x 100000。 阅读本文http://www.cs.up.ac.za/cs/vpieterse/pub/PieterseEtAl_SAICSIT201
我有一些大的(200 GB 是正常的)平面数据文件,我想将它们存储在某种数据库中,以便可以快速访问并以数据逻辑组织的直观方式进行访问。将其视为大量非常长的录音,其中每个录音的长度(样本)相同,并且可以
我需要将两个大矩阵相乘并对它们的列进行排序。 import numpy a= numpy.random.rand(1000000, 100) b= numpy.random.rand(30000
CentOS7 禁用Transparent Huge Pages 自CentOS6版本开始引入了Transparent Huge Pages(THP),从CentOS7版本开始,该特性默认就会启用
是否有可以解释 .NET 程序集(可执行文件或 DLL 文件)大小的工具? 在过去,有一个 IDE 扩展可以详细说明项目使用的空间。 它应该显示大型代码文件: 和数据资源: .NET 世界有这样的事情
我正在尝试 Composer,并且有 RubyGems/Bundler 背景,它确实表现出了一些有趣的行为。 我尝试创建一个新的 Laravel 项目,令我惊讶的是,我发现最终得到的供应商文件夹大小超
我使用 mercurial 克隆了 vim 源代码,并运行了以下命令: make distclean ./configure --with-features=huge make sudo make i
我正在对不适合缓存的数组进行大量计算(这里是导数,但看起来类似于图像操作),这意味着 CPU 必须在缓存中加载部分,计算,然后加载另一部分,等等。但是因为在计算的形状中,一些数据被加载、卸载和重新加载
我有一个巨大的选择查询,我必须在其中加入超过 85 个表。我在运行查询时不断收到错误消息,如果我在收缩整个语句时重新运行查询,它运行良好。 查看下面的部分连接,它一直执行到表 85: select $
在 mySql 中,我有下表(名为“staff”),其中包含 800 条记录(可能更多): day start_time end_time
这更像是一个理论查询,但我有一个复杂的联接(导致主表中多达 1900 条记录,再加上联接中的所有子结果表——如下所示的联接),生成的网页在我的本地计算机上需要 5-10 分钟才能处理并完成构建。我意识
所以我有一个包含 4 016 515 759 行的表格。我需要将我的 address_id 字段的字段类型从 int 更改为 bigint,它也是一个 FOREIGN KEY。 我刚刚测试了这个查询:
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and t
这是我的机器详细信息 (ubuntu): $uname -a Linux rex-think 3.13.0-46-generic#76-Ubuntu SMP Thu Feb 26 18:52:13 U
我使用类型修饰符(far,near,huge) 普通变量而不是指针,发现这些指针类型修饰符只适用于全局普通变量,但使用时会产生错误 block 的局部变量。 int near a,far b,huge
我是一名优秀的程序员,十分优秀!