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

mysql-batch的Python项目详细描述


#MySQL批处理

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


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

锁定(使用innodb)。如果需要更新或删除大量行,还可以限制一次选择的行数。

以下示例将与以下更新相同:

``sql
update batch_test set date=now(),其中number>;0.2和date为空;
```

这相当于使用20行批处理此更新:

``bash
mysql批处理--主机本地主机\
--用户根\
--密码机密密码\
--数据库"测试"\
--表"批处理测试"\
--写入"批量大小20"\
--其中"数字>;0.2,日期为空"\
--设置"日期=现在()"
````

输出示例:

```bash
*选择数据…
查询:从批量测试中选择id作为id,其中数字>;0.2,日期为空,id>;0 order by id limit 1000
*正在准备修改83行…
*正在更新20行…
查询:update batch_test set date=now(),其中id in(1、2、3、4、5、6、8、9、10、11、12、14、15、16、17、18、19、20、21、22)
*是否开始更新?[Y/N]
*正在更新20行…
查询:update batch_test set date=now(),其中id in(23、25、26、28、29、30、31、33、35、36、37、38、39、40、42、43、44、45、46、47)
*正在更新20行…
查询:update batch_test set date=now(),其中id in(48、49、50、51、52、53、54、55、56,58、59、60、61、63、64、65、68、69、70、71)
*正在更新20行…
查询:update batch_test set date=now(),其中id位于(72、74、75、77、78、79、80、81、82、83、84、85、86、88、89、90、91、92、94,95)
*更新3行…
查询:更新批次测试集date=now(),其中id in(97,98,100)
*选择数据…
查询:从批次测试中选择id作为id,其中number>;0.2,date为空,id>;100 order by id limit 1000
*无需再修改行!
*程序退出了删除示例




```

这相当于用20行批处理此删除:

```bash
mysql批处理--主机本地主机\
--用户根\
--密码机密密码\
--数据库"测试"\
--表"批处理测试"\
--写入"批量大小20"\
--其中"数字>;0.2,日期为空"\
--操作"删除"
`````

输出示例:

``bash
*选择数据…
查询:从批量测试中选择id作为id,其中数字>;0.2,日期为空,id>;0order by id limit 1000
*准备修改79行…
*删除20行…
查询:从批处理测试中删除,其中id in(1、2、3、4、5、6、7、8、9、10、11、12、14、15、17、19、20、21、22、23)
*是否开始删除?[Y/N]
*删除20行…
查询:从ID位于(24、25、26、28、34、35、36、37、38、39、40、41、44、45、47、48、50、51、52、53)的批次测试中删除
*删除20行…
查询:从ID位于(54、56、57、58、60、61、62、63、64、65、66、67、68、70、71,72、73、74、75、76)
*删除19行…
查询:从批次测试中删除,其中id在(77、78、79,80、82、83、86、87、88、89、90、91、93、94、95、96、98、99、100)
*选择数据…
查询:从批次测试中选择id作为id,其中number>;0.2和date为空,id>;100按id限制1000排序
*无需再修改行!
*程序已退出
```

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


--密码密码
mysql密码
-d数据库,--数据库数据库
mysql数据库名
-t表,--表
mysql表
-id主键,--主键主键
主键列的名称
-w where,--where
select where子句
-s set,--set set update set子句
-rbz read_batch_size,--read_batch_size read_batch_size
选择批大小
-wbz write-batch-size,--write-batch-size write-batch-size
update/delete-batch-size
-s sleep,--sleep-sleep
sleep after each batch
-a{update,delete},--action{update,delete}
操作('update'或'delete')
-n,--不确认在运行写操作之前不要求确认
查询
````

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

推荐PyPI第三方库


热门话题
序列化反序列化java。awt。颜色>java。木卫一。InvalidClassException   java禁用多个日期范围jDateChooser   java为什么我的特例apper会被扔进泽西/灰熊?   JavaIntelliJ比较两个覆盖率数据   java什么是servletsdefault。你怎么办?   单击几下libgdx后java按钮没有响应   使用java将字符串转换为JSONArray   文件系统在java中刷新fileSystemViewer   java如何在hibernate中避免脏检查   java奇怪的问题,带有分号和“无法解决…”   java将值从子面板传递到父面板   HTML JTextPane CSS的Java FontSizeAction   java文件代码神秘地变成了一堆(0000)