编辑
2024-06-05
📘总结-保持好奇心
00
请注意,本文编写于 379 天前,最后修改于 225 天前,其中某些信息可能已经过时。

目录

项目背景
执行语句,找到最优的时间段
shell脚本实现
查询2亿,需要花费多长时间
优化的方法

项目背景

因新的需求,需要在2.4亿条数据当中,新增一个字段。框架使用的是Django,对于这个字段生成了迁移文件,但是在这种数据量的情况下,是无法使用python manage.py migrate来进行迁移的

最有效的方式还是执行Sql语句

执行语句,找到最优的时间段

我们利用id来进行查询,查询出来的结果,每次更新所需要的时间。

数据量时间
20w1分钟
50w3分钟+
10w28s、32s
80w4分钟

找到最优的时间是,20w 1分钟

shell脚本实现

利用shell脚本,循环调用执行docker 的sql,预计时间20小时

shell
for ((i=1,j=200000;i<=240000000;i=+200000,j=j+200000)); do sql="update **** set has_bool=false where id between '${i}' and '${j}'" echo $sql docker exec -it stolon_keeper sh -c "export PGPASSWORD=****; pgsql -h 127.0.0.1 -d fingerprint -U * -c \"${sql}\"" done # time docker exec -it stolon_keeper sh -c "export PGPASSWORD=*****;psql -h 127.0.0.1 -d fingerprint -U * -c \"COPY (${sql}) to stdout (FORMAT CSV,HEADER);\" | tee /tmp/output-data/" && docker cp stolon_keeper:/tmp/output-data/~

查询2亿,需要花费多长时间

优化的方法

本文作者:Eric

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!