我有通过ODBC访问MySQL的C#代码。
它创建一个事务,执行几千个插入命令,然后提交。现在我的问题是,在数据库服务器上发生了多少次“往返”?我的意思是,它是简单地将每个insert命令传输到DB服务器,还是缓存/缓冲它们并成批地发送它们?这是可配置的吗?
发布于 2008-09-21 12:53:22
MySQL有一种可以使用的扩展SQL风格,其中批量插入一次放在几个位置:
INSERT INTO `table` (`id`, `event`) VALUES (1, 94263), (2, 75015), (3, 75015);在运行SQL查询之前,我通常会将几百个插入部分收集到一个字符串中。这将通过自己批量处理它们来减少解析和通信的开销。
发布于 2010-12-31 03:35:15
对行数本身没有限制;限制是传输到服务器的字节数。
您可以构建大容量插入,直到在“最大允许的数据包”中指定的字节数。如果我想使用最少的插入,我会尝试这样做。
发布于 2008-09-21 12:37:37
它为您提交的每个查询执行一次往返(无论它是否在事务中)。
在MySQL中,可以使用“扩展插入”语法,它允许您在一条语句中插入多个(或者实际上是多个)行。这通常被认为是一件好事。
https://stackoverflow.com/questions/110894
复制相似问题