我正在使用MySQL+Django,我正在下载和更新数据库中的数据。我有一些大型查询,有时会失败-> "MySQL服务器已经消失 "或 "在查询过程中失去连接"
服务器运行在Linux上,Ubuntu 18.04.3 (LTS) ,服务器有1GB的内存。只运行一个MySQL数据库和一个gunicorn网络服务。
查询是这样的
SELECT * FROM XYZ_table WHERE id IN (list with about 10-40K values)
我在这里有什么可能性? 我是否应该拆分查询,然后再将不同的列表连在一起? 还是有一个MySQL配置值我可以增加?我将max_allowed_packet设置为512M。
这一般说明MySQL服务器连接问题或超时。一般可以通过修改wait_timeout和max_allowed_packet中的 my.cnf
或类似。
我建议使用这些值。
wait_timeout = 28800
max_allowed_packet = 8M
或
SHOW VARIABLES LIKE 'open%'
这将显示你的open_files_limit,设置为最大值,如下图。
open_files_limit = 100000