我们一直在遇到这样一个问题:查询具有约5000万行,索引大小为4 GB(表大小约为6 GB)的表会导致数据库服务器交换内存,并且速度显着降低。我很确定这与超出临时表的大小有关,并且已将其交换到磁盘。
如果我将数据库服务器从32 GB的RAM升级到64 GB的RAM,我想知道MySQL数据库是否能够充分利用此额外的内存而不进行交换。我经历了一些变量(例如KEY_BUFFER_SIZE等),它们似乎支持超过64 GB的设置值。但是,MySQL文档说tmp_table_size的最大值为4 GB。
那么内存升级值得吗?“大表查询”问题将从中受益,还是因为4 GB的限制而无济于事?我知道可能还有其他解决方案,例如重组表以不同的方式进行分区等,但是在不更改表的任何内容的情况下,额外的内存有帮助吗?
而且,通常,从32 GB RAM迁移到64 GB RAM时,MySQL是否还有其他与内存相关的变量无法利用?
我们正在使用64位linux(Ubuntu)作为我们的数据库服务器。
谢谢,盖伦