gpt4 book ai didi

mysql - 大型数据库上的 mysqldump 会导致我的长查询挂起吗?

转载 作者:行者123 更新时间:2023-11-29 06:09:45 24 4
gpt4 key购买 nike

我有一个很大的数据库(大约 50GB)。它位于我几乎无法控制的服务器上,但我知道他们正在使用 mysqldump 每晚进行备份。

我有一个查询需要几个小时才能完成。我将其设置为运行,但它从未真正完成。

我注意到在备份时间之后,所有表都有一个锁定请求(SHOW OPEN TABLES WHERE in_use > 0;列出所有表)。

我的查询中的表的 in_use = 2,所有其他表的 in_use = 1。

那么...这里发生了什么?a) 我的查询正常运行,阻止转储发生。我应该等待吗?b) 转储导致服务器挂起(可能缺少内存/磁盘空间?)c) 还有别的吗?

编辑:使用 MyISAM 表

有一个服务器管理员能力不是很强,但如果我问他具体的事情,他就会做。我应该让他检查什么?

编辑:添加查询

SELECT citing.article_id as citing, citing.year, r.id_when_cited, cited_issue.country
FROM isi_lac_authored_articles as citing # 1M records
JOIN isi_citation_references r ON (citing.article_id = r.article_id) # 400M records
JOIN isi_articles cited ON (cited.id_when_cited = r.id_when_cited) # 25M records
JOIN isi_issues cited_issue ON (cited.issue_id = cited_issue.issue_id) # 1M records

这就是 EXPLAIN 所说的:

+----+-------------+-------------+------+--------------------------------------------------------------------------+---------------------------------------+---------+-------------------------------+---------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------------+------+--------------------------------------------------------------------------+---------------------------------------+---------+-------------------------------+---------+-------------+
| 1 | SIMPLE | cited_issue | ALL | NULL | NULL | NULL | NULL | 1156856 | |
| 1 | SIMPLE | cited | ref | isi_articles_id_when_cited,isi_articles_issue_id | isi_articles_issue_id | 49 | func | 19 | Using where |
| 1 | SIMPLE | r | ref | isi_citation_references_article_id,isi_citation_references_id_when_cited | isi_citation_references_id_when_cited | 17 | mimir_dev.cited.id_when_cited | 4 | Using where |
| 1 | SIMPLE | citing | ref | isi_lac_authored_articles_article_id | isi_lac_authored_articles_article_id | 16 | mimir_dev.r.article_id | 1 | |
+----+-------------+-------------+------+--------------------------------------------------------------------------+---------------------------------------+---------+-------------------------------+---------+-------------+

我其实不明白为什么它需要查看 isi_issues 表中的所有记录。难道它不应该只与issue_id上​​的isi_articles(引用)相匹配吗?这两个字段都已建立索引。

最佳答案

对于这种大小的 MySQL 数据库,您可能需要考虑设置到从属节点的复制,然后在从属节点上执行夜间数据库备份。

关于mysql - 大型数据库上的 mysqldump 会导致我的长查询挂起吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9707252/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com