mysql的批量更新的语法_MySQL中的Sqlalchemy批量更新非常有效
我使用的是SQLAlchemy 1.0.0,并希望成批地进行一些UPDATE ONLY(如果匹配主键,则更新,否则不执行任何操作)查询。在
我做了一些实验,发现大容量更新看起来比大容量插入或大容量upsert慢得多。在
你能帮我指出为什么它工作得这么慢吗?或者有没有其他的方法/想法来制作BULK UPDATE (not BULK UPSERT) with SQLAlchemy?在
以下是MYSQL中的表:CREATE TABLE `test` (
`id` int(11) unsigned NOT NULL,
`value` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
以及测试代码:
^{pr2}$
当num_of_rows=100时的输出:--------- test insert --------------
Cost 0.568960905075 seconds
--------- test upsert --------------
Cost 0.569655895233 seconds
--------- test update --------------
Cost 20.0891299248 seconds
当num_of_rows=1000时的输出:--------- test insert --------------
Cost 0.807548999786 seconds
--------- test upsert --------------
Cost 0.584554195404 seconds
--------- test update --------------
Cost 206.199367046 seconds
到数据库服务器的网络延迟大约为500毫秒
看起来像是批量更新,它一个接一个地发送和执行每个查询,不是成批的吗?在
提前谢谢。在