使用小批量运行大型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试图使用JavaFX2实现“插入符号浏览”   三个给定集合中两个集合的java交集?   数组如何在java中从csv文件的元素集中随机选择?   java从变量插入到Jtable,从DB插入   java如何在静态方法的末尾返回变量   java另一个JPA问题   java收藏家。按两列分组不起作用   将java值改为下一个千,而不是最近的千   JavaSpringDataREST:如何通过另一个对象的键进行搜索?   java Spring MVC:HTTP Status 404/SimpleMVC/WEB_INF/HelloPage。jsp   java应用程序光盘在OpenJdk中可用吗?   java在数组中的特定点添加字符   java如何用Mockito模拟方法调用   java从JList获取数据   我们可以在Java中搜索不同IMAP电子邮件帐户中的电子邮件吗?   计算表达式的数学Java算法   未构建Maven的java服务器组件   java调用部署在远程计算机上的会话bean的方法   java XML:迭代地获取每个节点元素的节点值或文本内容