3

我在 RDS 上运行的一些内存表有一个奇怪的问题。我不知道这是否是 RDS、mysql 5.1.57 特有的问题,或者只是我的PEBKAC问题,但这是一个令人沮丧的下午。

无论我为 max_heap_table_size 赋予什么值,我的内存表始终停留在最大数据长度 9360878 上。这已通过使用 SHOW TABLE STATUS 并仅通过在表中插入已知数量的数据来确定。

我尝试在 RDS 参数组中设置该值(我尝试重新启动,即使我将方法设置为立即)并且我尝试使用 SET 在查询行设置该值。我已经尝试了从 16 MB 到 16 GB 的每个值,它对 max_data_length 没有影响。

我也尝试过设置 max_temp_table_size,尽管据我所知,这不应该与非临时内存引擎表一起使用。

谁能指出我正确的方向?我需要桌子能够容纳大约 150M。

4

1 回答 1

3

避免使用内存或临时表

由于 MySQL 不会将内存或临时表写入磁盘,因此在尝试使用 Point In Time Restore RDS 功能时,使用这些 MySQL 功能会导致问题。此操作依赖于能够通过回放在数据库上执行的操作来重新创建数据库实例。如果在回放期间某些操作依赖于不存在的信息(因为它从未提交到磁盘),MySQL 将无法启动。当 MySQL 在此 RDS 还原操作期间无法启动时,RDS 会将 DB Instance 状态设置为 incompatible-restore。

注意:由于 MySQL 只读副本创建方式的性质,使用内存或临时表也可能会阻止成功创建 RDS MySQL 只读副本。

于 2012-07-18T18:40:48.073 回答