草庐IT

非常大的表上的 MySQL ALTER TABLE - 运行它安全吗?

我有一个带有MyISAM表的MySQL数据库,该表有400万行。我大约每周用大约2000行更新此表。更新后,我会像这样更改表格:ALTERTABLExORDERBYPKDESC我按主键字段降序排列表格。这在我的开发机器(3GB内存的Windows)上没有给我带来任何问题。我已经在生产Linux服务器上成功尝试了3次(使用512MBRAM-每次都在大约6分钟内获得结果排序表),上次我尝试它时我不得不在大约30分钟后停止查询并重建来自备份的数据库。512MB的服务器可以处理如此大的表上的alter语句吗?我读到创建了一个临时表来执行ALTERTABLE命令。问题:这个alter命令能安全运

非常大的表上的 MySQL ALTER TABLE - 运行它安全吗?

我有一个带有MyISAM表的MySQL数据库,该表有400万行。我大约每周用大约2000行更新此表。更新后,我会像这样更改表格:ALTERTABLExORDERBYPKDESC我按主键字段降序排列表格。这在我的开发机器(3GB内存的Windows)上没有给我带来任何问题。我已经在生产Linux服务器上成功尝试了3次(使用512MBRAM-每次都在大约6分钟内获得结果排序表),上次我尝试它时我不得不在大约30分钟后停止查询并重建来自备份的数据库。512MB的服务器可以处理如此大的表上的alter语句吗?我读到创建了一个临时表来执行ALTERTABLE命令。问题:这个alter命令能安全运

mysql - 如何在 mysql 中一次更改多个表?

我正在尝试更改多个表并将usernameVARCHAR列的大小更改为999,因为它当前的大小太小,现在事情搞砸了。我该怎么做?我尝试了以下方法,它适用于一个表,但在尝试更新多个表名时返回错误:ALTERTABLE`TABLE_NAME`CHANGE`username`VARCHAR(999)CHARACTERSETlatin1COLLATElatin1_swedish_ciNOTNULL 最佳答案 您不能通过单个查询来完成。您需要查询information_schemaView以获取要更改的表和列的列表。然后,您将使用生成的结果集创

mysql - 如何在 mysql 中一次更改多个表?

我正在尝试更改多个表并将usernameVARCHAR列的大小更改为999,因为它当前的大小太小,现在事情搞砸了。我该怎么做?我尝试了以下方法,它适用于一个表,但在尝试更新多个表名时返回错误:ALTERTABLE`TABLE_NAME`CHANGE`username`VARCHAR(999)CHARACTERSETlatin1COLLATElatin1_swedish_ciNOTNULL 最佳答案 您不能通过单个查询来完成。您需要查询information_schemaView以获取要更改的表和列的列表。然后,您将使用生成的结果集创

mysql - 限制 ALTER TABLE 磁盘利用率

我将从MySQLOnlineDDLLimitations中的一些内容开始。页面:ThereisnomechanismtopauseanonlineDDLoperationortothrottleI/OorCPUusageforanonlineDDLoperation.但是,我仍然对可能错过的解决方案感兴趣。情况:索引越来越大,而且它们变得越来越大,以至于没有足够的内存来处理所使用的查询,导致磁盘I/O猛增,一切都陷入困惑.已创建较小的新复合索引,但问题是运行ALTERTABLE而不破坏任何内容。事实如下:这是一个InnoDB表。该表没有主键或唯一索引。任何列组合都不适合用作主键或唯一索

mysql - 限制 ALTER TABLE 磁盘利用率

我将从MySQLOnlineDDLLimitations中的一些内容开始。页面:ThereisnomechanismtopauseanonlineDDLoperationortothrottleI/OorCPUusageforanonlineDDLoperation.但是,我仍然对可能错过的解决方案感兴趣。情况:索引越来越大,而且它们变得越来越大,以至于没有足够的内存来处理所使用的查询,导致磁盘I/O猛增,一切都陷入困惑.已创建较小的新复合索引,但问题是运行ALTERTABLE而不破坏任何内容。事实如下:这是一个InnoDB表。该表没有主键或唯一索引。任何列组合都不适合用作主键或唯一索

mysql - 如何在Mysql中从另一个表向表中添加一列?

我有两张table表1表2Tabel1包含2列编号姓名Tabel2包含2列编号年龄A想将table2中的年龄列添加到table1(WHEREtable1.id=table2.id)那么table1应该包含3列编号姓名年龄 最佳答案 首先添加具有适当数据类型的列。ALTERTABLEtable1ADDCOLUMNAgeTINYINTUNSIGNEDNOTNULLDEFAULT0;然后更新表格,使值“传输”。UPDATEtable1t1INNERJOINtabel2t2ONt1.id=t2.idSETt1.Age=t2.Age

mysql - 如何在Mysql中从另一个表向表中添加一列?

我有两张table表1表2Tabel1包含2列编号姓名Tabel2包含2列编号年龄A想将table2中的年龄列添加到table1(WHEREtable1.id=table2.id)那么table1应该包含3列编号姓名年龄 最佳答案 首先添加具有适当数据类型的列。ALTERTABLEtable1ADDCOLUMNAgeTINYINTUNSIGNEDNOTNULLDEFAULT0;然后更新表格,使值“传输”。UPDATEtable1t1INNERJOINtabel2t2ONt1.id=t2.idSETt1.Age=t2.Age

生产数据库上的 MySql ALTER TABLE - 有什么问题吗?

我有大约100个数据库(结构相同,只是在不同的服务器上),每个数据库大约有十几个表。大多数表都很小(比如说100MB或更少)。偶尔会出现表格可能很大(比如说4GB+)的边缘情况。我需要在每个数据库中的几乎每个表上运行一系列ALTERTABLE命令。主要是向结构中添加一些行,但也有一些变化,例如将行从varchar更改为tinytext(反之亦然)。还添加了一些新索引(但索引新行,而不是现有行,所以假设这没什么大不了的)。我想知道这样做有多安全,以及此过程是否有任何最佳实践。首先,我是否有可能损坏或删除表中的数据。我怀疑不是,但需要确定。其次,我假设对于较大的表(4GB+),这可能是几分

生产数据库上的 MySql ALTER TABLE - 有什么问题吗?

我有大约100个数据库(结构相同,只是在不同的服务器上),每个数据库大约有十几个表。大多数表都很小(比如说100MB或更少)。偶尔会出现表格可能很大(比如说4GB+)的边缘情况。我需要在每个数据库中的几乎每个表上运行一系列ALTERTABLE命令。主要是向结构中添加一些行,但也有一些变化,例如将行从varchar更改为tinytext(反之亦然)。还添加了一些新索引(但索引新行,而不是现有行,所以假设这没什么大不了的)。我想知道这样做有多安全,以及此过程是否有任何最佳实践。首先,我是否有可能损坏或删除表中的数据。我怀疑不是,但需要确定。其次,我假设对于较大的表(4GB+),这可能是几分