删除大型数据集的最佳方法

时间:2018-06-20 09:59:21

标签: python sqlalchemy celery

我具有以下数据模型,并且在删除带有大量Order对象(超过500K)的Customer对象时遇到性能问题。尝试删除整个数据集时,出现事务超时错误。

class Customer(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    orders = db.relationship("Result", back_populates="customer", cascade="all, delete-orphan")

class Order(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    customer_id = db.Column(db.Integer, db.ForeignKey('customer.id'), nullable=False)
customer db.relationship("Customer", back_populates="orders")

为了解决此问题,我正在考虑实现一种类似https://blog.miguelgrinberg.com/post/implementing-the-soft-delete-pattern-with-flask-and-sqlalchemy的软删除方法,并在后台通过Celery任务清除已删除的行。这是解决问题的好方法吗? 如果是,我应该如何进行清除过程?

0 个答案:

没有答案