我有一个 PHP/Laravel/MariaDB 项目,数据库每天都在变大,现在有些表已经有 4kk+ 记录
服务器是 4GB RAM + Ubuntu 14.04 + Apache (DigitalOcean)
当我只启动服务器(或重新启动它)时,一切正常,但几个小时后,任何请求mysql
都非常慢
我一直有 1.5-2Gb 的空闲 RAM,但我找不到任何迹象,那里出了什么问题。如果我重新启动mysql
进程,一切都会恢复正常状态,但几个小时后又会发生。
我相信数据库结构很好,索引和一切。因为它在前几个小时工作得很好。
我改变了my.cnf
:
innodb_log_file_size = 500M
innodb_buffer_pool_size = 2G
Run Code Online (Sandbox Code Playgroud)
我尝试设置innodb_buffer_pool_size
为3G,但之后mysql无法启动
我试图用谷歌搜索任何可能的词组合,并尝试实施不同的解决方案,但这没有帮助。我真的可以使用一个建议
我需要从一个大表中删除一些行。要删除的行不应在另一个表中,例如:
DELETE FROM LargeTable WHERE id IS NOT IN (SELECT DISTINCT foreign_id from EvenLargerTable)
但是我的服务器无法处理这种生硬的查询,因为 LargeTable 中几乎有一百万条记录,而 EvenLargerTable 中有几百万条记录
我该如何解决?