我在RDS上运行的一些内存表有一个奇怪的问题。我不知道这是RDS,MySQL5.1.57的特定问题,还是仅仅是我的PEBKAC问题,但这是一个令人沮丧的下午。
无论我给max_heap_table_size赋什么值,我的内存表总是停留在最大数据长度9360878。这是使用SHOW TABLE STATUS并通过在表中插入已知量的数据来确定的。
我已经尝试在RDS参数组中设置该值(我已经尝试重新引导,尽管我将方法设置为immediate),并且我尝试使用SET在查询行设置该值。我尝试了从16兆字节到16G字节的每个值,但它对max_data_length没有影响。
我也尝试过设置max_temp_table_size,尽管据我所知,它不应该与非临时内存引擎表一起使用。
有谁能给我指个方向吗?我需要这些桌子能够容纳大约150米。
发布于 2012-07-19 02:40:48
避免内存中或临时表
由于MySQL不会将内存中的表或临时表写入磁盘,因此在尝试使用时间点恢复MySQL功能时,使用这些RDS功能会导致问题。此操作依赖于能够通过回放在数据库上执行的操作来重新创建DB实例。如果在回放期间,某些操作依赖于不存在的信息(因为它从未提交到磁盘),则MySQL无法启动。在此RDS恢复操作期间,如果MySQL无法启动,则RDS会将数据库实例状态设置为不兼容-恢复。
注意:由于创建MySQL读取副本的方式的本质,使用内存中或临时表也会阻止成功创建MySQL读取副本。
https://stackoverflow.com/questions/8438944
复制相似问题