Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL在插入两个不同的表时是否提高了性能?_Mysql - Fatal编程技术网

MySQL在插入两个不同的表时是否提高了性能?

MySQL在插入两个不同的表时是否提高了性能?,mysql,Mysql,我正在使用一个程序,它有多个节点服务器将行插入到一个MySQL服务器表中 由于它们正在写入同一个表,因此显然会使用锁,每个节点都必须等待,直到可以插入为止 我觉得每个节点都可以写入一个单独的表以加速操作,然后在程序完成后,我们可以将所有表中的行合并到一个表中 我的主管说这不起作用,因为MySQL写多个表需要相同的时间 这是真的吗?如果我写单独的表,会不会有性能/时间差异?我认为MySQL将使用单独的线程。或者是因为多个进程插入将意味着硬盘上的负载增加而导致延迟?一般来说,MySQL不使用单独的线

我正在使用一个程序,它有多个节点服务器将行插入到一个MySQL服务器表中

由于它们正在写入同一个表,因此显然会使用锁,每个节点都必须等待,直到可以插入为止

我觉得每个节点都可以写入一个单独的表以加速操作,然后在程序完成后,我们可以将所有表中的行合并到一个表中

我的主管说这不起作用,因为MySQL写多个表需要相同的时间


这是真的吗?如果我写单独的表,会不会有性能/时间差异?我认为MySQL将使用单独的线程。或者是因为多个进程插入将意味着硬盘上的负载增加而导致延迟?

一般来说,MySQL不使用单独的线程写入单独的表。然而,写操作的管理方式最终取决于表引擎,而不是严格的MySQL服务器

MySQL文档描述了:

用于各种连接 复制 信号 磁盘刷新 事件调度器 innodb特定线程 但是您可以从列表中看到,每次写入表时没有单独的线程

通常也不能说同时写入多个表比将相同数据写入同一个表快。首先,无论存储多少表,都需要写入相同的数据

如果您只有一个表,那么显然该表上的锁可能会降低插入该表的速度,但MySQL的默认innodb表类型可以很好地处理此类情况——它是为高度并发使用而设计的

如果将相同的数据写入多个表,则必须发出多个sql语句,还需要添加额外的引用数据,以确保各个表中的数据可以连接在一起。单表方法没有这种开销

总而言之:您不能假设多表插入方法更快。您可以进行详细的测试,以分析并证明在您的特定情况下,多表方法比单表方法工作得更好,但即使在这种特定情况下,更改设计的结果也必须非常有说服力,而且对MySQL的一些配置更改可能比更改设计提供更好的解决方法