MySQL数据库中如何处理同步查询?

MySQL数据库中如何处理同步查询?,sql,mysql,performance,Sql,Mysql,Performance,我使用的是MySQL数据库,我想知道如果为了从多个表中获取信息而同时进行多个(500或更多)查询,这些查询是如何处理的?顺序还是并行?查询总是在多个会话(即客户端连接)之间并行处理。单个连接上的所有查询都会一个接一个地运行。根据可用的服务器资源,可以配置多个连接之间的并行级别 通常,某些操作在单独的查询会话(称为事务)之间受到保护。InnoDB后端支持这些,但MyISAM表不支持(但它支持称为原子操作的概念)。存在不同级别的隔离,在哪些操作相互保护(以及一个并行事务中的操作如何影响另一个并行事务

我使用的是MySQL数据库,我想知道如果为了从多个表中获取信息而同时进行多个(500或更多)查询,这些查询是如何处理的?顺序还是并行?

查询总是在多个会话(即客户端连接)之间并行处理。单个连接上的所有查询都会一个接一个地运行。根据可用的服务器资源,可以配置多个连接之间的并行级别

通常,某些操作在单独的查询会话(称为事务)之间受到保护。InnoDB后端支持这些,但MyISAM表不支持(但它支持称为原子操作的概念)。存在不同级别的隔离,在哪些操作相互保护(以及一个并行事务中的操作如何影响另一个并行事务)及其性能影响方面存在差异


有关详细信息,请阅读中的事务和中的实现。

通常所有查询都将并行运行


但是。。。这有一些例外。根据事务隔离级别,更新时可以锁定行。请在此处阅读更多信息:

每个连接最多可以一次运行一个查询,并在单个线程中执行。服务器为每个查询打开一个线程

通常,希望查询不会相互阻塞。但是,根据引擎和查询的不同,它们可能会不同。MySQL中有很多锁定,手册中对此进行了详细讨论

然而,如果它们不互相阻塞,它们仍然可以通过消耗资源来减缓彼此的速度。IO操作是这些减速的一个特殊原因。如果您的数据不适合内存,您应该将并行查询的数量限制在IO子系统能够处理的范围内,否则情况会变得非常糟糕。测量是关键

我通常会说,如果同时运行500个查询(而不是等待锁定),您可能无法从硬件中获得最佳价值(您是否有500个内核?有多少线程正在等待IO?)