因新的需求,需要在2.4亿条数据当中,新增一个字段。框架使用的是Django,对于这个字段生成了迁移文件,但是在这种数据量的情况下,是无法使用python manage.py migrate来进行迁移的
最有效的方式还是执行Sql语句
我们利用id来进行查询,查询出来的结果,每次更新所需要的时间。
数据量 | 时间 |
---|---|
20w | 1分钟 |
50w | 3分钟+ |
10w | 28s、32s |
80w | 4分钟 |
找到最优的时间是,20w 1分钟
利用shell脚本,循环调用执行docker 的sql,预计时间20小时
shellfor ((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/~
本文作者:Eric
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!