使用小批量运行大型PostgreSQL更新和删除查询以防止锁定

pg-batch的Python项目详细描述


#PG批次

[![构建状态](https://travis-ci.org/gaffl/pg-batch.svg?branch=master)(https://travis ci.org/gabfl/pg batch)



更新或删除postgresql中的大量行将创建锁,使其他并行运行的查询瘫痪。

并以小批量删除查询以限制锁定。如果需要更新或删除大量行,也可以限制一次选择的行数。

chema.sql](sample_table/schema.sql)

/>``` bash
pg廑batch--host localhost\
--用户postgres\
--密码机密廑password\
--数据库"测试"\
--表"batch廑test"\
--写入廑batch廑size 20\
--其中"数字>;30和日期为空"\
--设置"d"ate=now()"
```

输出示例:

``bash
*选择数据…
查询:从批次测试中选择id作为id,其中number>;30和date为空,id>;0按id限制排序10000
*准备修改70行…
*更新20行…
查询:更新批次est set date=now(),其中id in(31、32、33、34、35、36、37、38、39、40、41、42、43、44、45、46、47、48、49、50)开始更新?[Y/N]
*正在更新20行…
查询:update batch_test set date=now(),其中id in(51、52、53、54、55、56、57、58、59、60、61、62、63、64、65、66、67、68、69、70)
*正在更新20行…
查询:update batch_test set date=now(),其中id in(71、72、73、74、75、76、77、78、79、80、81、82、83、84、85、86、87、88、89、90)
*更新10行…
查询:更新批次测试集日期=now(),其中id位于(91、92、93、94、95、96、97、98、99、100)
*选择数据…
查询:从批次测试中选择id作为id,其中number>;30和date为空,id>;100 order by id limit 10000
*没有更多行可修改!
*程序退出
```



``` bash
pg廑batch--主机localhost\
--用户postgres\
--密码机密廑password\
--数据库"测试"\
--表"batch廑test"\
--写入廑batch廑size 20\
--其中"数字>;30和日期为空"\
--操作"delete"
```

输出示例:

``bash
*选择数据…
查询:从批处理测试中选择id作为id,其中number>;30和date为空,id>;0按id限制排序10000
*准备修改70行…
*删除20行…
查询:delete from批处理测试,其中id in(31、32、33、34、35、36、37、38、39、40、41、42、43、44、45、46、47、48、49、50)开始删除?[Y/N]
*删除20行…
查询:从ID位于(51、52、53、54、55、56、57、58、59、60、61、62、63、64、65、66、67、68、69、70)的批次测试中删除
*删除20行…
查询:从ID位于(71、72、73、74、75、76、77、78、79、80、81、82、83、84、85、8)的批次测试中删除6,87,88,89,90)
*删除10行…
查询:从批次测试中删除,其中ID位于(91,92,93,94,95,96,97,98,99,100)
*选择数据…
查询:从批次测试中选择ID作为ID,其中编号>;30,日期为空,ID>;100按ID排序限制10000
*没有更多行可修改!
*程序退出
```

[-a{update,delete}[-n]


可选参数:
-h,--帮助显示此帮助消息并退出
-h主机,--主机postgresql服务器主机
-p端口,--端口postgresql服务器端口
-u用户,--用户postgresql用户
-p密码,--密码密码
postgresql密码
-d数据库,--数据库数据库
postgresql数据库名称
-t表,--表表
postgresql表
-id主键,--主键主键
主键列的名称
-w where,--where
select where子句
-s set,--set set update set子句
-rbz read_batch_size,--read_batch_size read_batch_size
select batch size
-wbz write_batch_size,--write_batch_size write_batch_size
更新/删除batch size
-s睡眠,--sleep睡眠
每个批次后睡眠
-a{update,delete},--action{update,delete}
action('update'或'delete')
-n,--no_确认在运行write
查询之前不要要求确认
```

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
多线程Java易失性和可见性   如何正确组合循环(Java)?   java在外部库中设置CDI   java使用enum类方法中类的HashSet   java如何整理节点或文档字段?   是否在java中接受的方法调用中传递“this”   安卓无法bluid cordova应用程序:JDK的java需求检查失败   java从Spring更新web UI   java巨大的分配:如果发生巨大的分配,我如何要求jvm打印日志   java Tomcat身份验证要求重新登录,即使浏览器尚未关闭   java事务原子性与MySQL、MongoDB、RabbitMQ   java什么导致RTTI违反OpenClosed原则?   java将ISBN10转换为ISBN13   在MacOS X上用Eclipse Mars远程调试Tomcat 7   java在安卓中添加自定义框架   java Android在文件中写入最后一个值   java我想比较ArrayList<Player>数组中的每个元素和int[]数组   由@Version annotated int不递增引起的java OptimisticLockException   java SpelEvaluationException:EL1008E:在Thymeleaf应用程序中