postgresql 更新功能花费的时间太长

时间:2021-04-09 06:45:23

标签: python postgresql flask sqlalchemy flask-sqlalchemy

我有一张桌子叫

products

其中包含列

iddata

这里的数据是一个 JSONB。 id 是唯一 ID。

我尝试批量添加 1 万个产品,花了将近 4 分钟。 使用较低的产品更新效果很好,但是对于大量产品需要很多时间,我该如何优化它? 我正在尝试批量更新 20 万多个产品,现在我花了超过 5 分钟。

updated_product_ids = []
for product in products:
    new_product = model.Product(id, data=product['data'])
    new_product['data'] = 'updated data'
    new_product['id'] = product.get('id')
    updated_product_ids.append(new_product)

def bulk_update(product_ids_arr):
   def update_query(count):
            return f"""
            UPDATE pricing.products
            SET data = :{count}
            WHERE id = :{count + 1}
            """

        queries = []
        params = {}
        count = 1
        for sku in product_ids_arr:
            queries.append(update_query(count))
            params[str(count)] = json.dumps(sku.data)
            params[str(count + 1)] = sku.id
            count += 2

        session.execute(';'.join(queries), params) #This is what takes so long..


bulk_update(updated_product_ids)

我认为使用原始 sql 执行此操作会更快,但需要花费大量时间..

我正在尝试仅更新大约 8k 个产品,这需要将近 3 分钟或更长时间..

0 个答案:

没有答案