首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止/减少django应用程序中的死锁

防止/减少django应用程序中的死锁
EN

Stack Overflow用户
提问于 2021-10-13 13:45:23
回答 1查看 44关注 0票数 0

我最近在使用django中的一个大型MySQL数据库时遇到了一些问题,MySQL似乎遇到了死锁问题。

我一直收到错误:

代码语言:javascript
复制
(1213, 'Deadlock found when trying to get lock; try restarting transaction')

通常,当为新的模型实例(例如)调用save或create函数时,似乎会发生这种情况。

代码语言:javascript
复制
                payment = Payment.objects.create(
                    to_member=to_member,
                    to_name="%s" % to_member.username,
                    from_member=from_member,
                    from_name="%s" % from_member.username,
                    description="Resubscription",
                    type='resubscription',
                    amount=5.00,
                    currency=from_member,
                    processor='e-wallet'
                )

我尝试插入的特定表大约有310万行,大小为2.2 GB。

在生产环境中,应用程序有相当多的活跃用户(成员)。支付模型有两个特殊的外键(to_creator和from_member)。因此,我想知道这是否可能是问题的原因,而不仅仅是支付模式的原因?

我已经尝试过调整mysql配置的各个方面来处理这个问题,但是我似乎要么得到更多的死锁,要么整个系统都被锁住了!

以下是我对锁的当前设置:

Database locks

任何帮助都将不胜感激。在过去的几天里,我一直在为这件事而烦恼。

EN

回答 1

Stack Overflow用户

发布于 2021-10-13 18:54:32

首先,有没有数据丢失?事务中的错误意味着它没有实现,理论上您的数据是完好的。

其次,对于这么小的数据库来说,这不是一种正常的情况(是的,我看到它是2 2GB,是的,它非常小,甚至整个数据库都可以缓存在RAM中)。

让我们检查一下:您是否覆盖了Payment模型的.save()方法?如果是,请告诉我们您在那里看到的更多信息。

在已经被阻塞的代码中有一些阻塞代码,你需要找到它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69556718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档