[英]How simultaneous queries are handled in a MySQL database?
我正在使用MySQL数据库,我想知道我是否同时进行多个(500个或更多)查询以获取来自多个表的信息,如何处理这些查询? 顺序还是并行?
每个连接最多可以同时运行一个查询,并在单个线程中执行。 服务器为每个查询打开一个线程。
通常,希望查询不会相互阻塞。 然而,根据引擎和查询,它们可能会。 MySQL中有很多锁定,在手册中有详细讨论。
但是,如果它们不相互阻挡,它们仍然可以通过消耗资源来减慢速度。 IO操作是这些减速的特定来源。 如果您的数据不适合内存,您应该将并行查询的数量限制为您的IO子系统可以处理的内容,否则事情会变得非常糟糕。 测量是关键。
我通常会说,如果一次运行500个查询(而不是等待锁定),您可能无法从硬件中获得最大价值(您有500个核心吗?有多少线程在等待IO?)
通常,所有查询都将并行运行。
但是......有一些例外。 根据您的事务隔离级别,可以在更新时锁定行。 在此处阅读更多相关信息: http : //dev.mysql.com/doc/refman/5.1/en/dynindex-isolevel.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.