使用小批量运行大型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第三方库


热门话题
为什么在Set/List/Map中包装元素的方法名称中包含“singleton”?(java.util.Collections)   java矩形类和containsPoint方法   java为什么log4j2中的monitorInterval没有重新加载记录器   java为什么强制转换为int会给我8而不是0?   java在处理JSP页面[/views/index.JSP]时发生异常   java-Android清洁体系结构双重实现   未找到R和H2O初始化Java路径中的错误   java开发和配置视图和控制器   java Spring JSTL日期格式转换为DDMMYYYY   java机制不工作?   java上下文初始化失败。Spring错误NoSuchMethodException   从Java读取COBOL数据结构的数据结构   java对话框不显示安卓   Java中HashMap的解析   velocity中的java全局上下文   尝试模拟静态(不兼容的依赖项)时出现java NoClassDefFoundError或NoSuchMethodError   java失败[INSTALL_FAILED_UID_CHANGED]发生在应用程序调试时,即使在工厂重置后也是如此   java在序列化为JSON时忽略子属性   JComboBox的java实例