【发布时间】:2013-08-15 12:27:36
【问题描述】:
如何从 Delphi 异步访问 MySQL 数据库?
执行 select 语句的线程不应被阻塞。为每个活动的 select 语句创建后台线程也不是一个解决方案,因为在负载较重的系统上,这会创建许多线程并导致性能问题。
IOCP(i/o 完成端口)正是我所需要的。但我不知道如何将这项技术与 Delphi 的 MySQL 一起使用。
【问题讨论】:
-
为什么您认为 IOCP 是适合您的方法。您认为并发执行数百个查询适合您的服务器吗?是的,客户端会很高兴,因为他们没有运行数百个线程,但是如果有很多客户端同时运行有这么多请求,那么服务器呢?考虑使用线程池并为查询设置队列。
-
重负载 = 性能问题?经典解决方案:增加更多性能:)
-
@TLama,我想从我的硬件中提取最大可能的性能。想象一下情况,当我有一个 Web 服务器和多个数据库服务器连接到本地网络时。如果有数百个线程在我的 Web 服务器上运行,那么大量的 CPU 时间将用于在它们之间进行切换。但是为什么在没有必要的时候必须完成这项工作呢? Web 服务器应该提供网页,但不能在线程之间切换。我想实现 node.js 的功能,但是在 Delphi 上。