有一台服务器应该能够同时处理数百个请求,我决定在python中执行此操作,目前它已启动并运行,现在我愿意优化此代码,因为我想做这个尽可能轻量化。
具有以下服务器布局:
Incoming connection
||
\/
_________________
| Handling server | <|
|_________________| |
|| |
\/ |
FORKING --------/
||
\/
_________________ 30 Queries ______________
| Dataprocessing | ---------->| MySQL-Server |
|_________________| <----------|______________|
||
\/
RESPONDING & closing connection
现在发生的是,如果 x 同时传入连接,MySQL服务器会在很短的时间内变得非常慢。
现在我正在寻找一种动态“合并”不同mysql请求或尽可能减少工作量的方法。
我可以提出的一个问题的例子是:
如何在给定时间范围内(5秒?)处理许多MySQL请求,同时尽可能降低MySQL服务器上的工作负载
答案 0 :(得分:3)
没有简单/一刀切的方法来实现这一目标,所以我建议您采用一些方法来适应您的特定情况。
减轻MySql服务器负载的最佳方法是在中间使用缓存层,如果适用于您的情况,但它取决于。
select
次查询如果您提取的信息与select
查询的比率相比没有经常更改,则可以使用缓存。
insert
/ update
语句这很棘手,如果多个语句涉及更改相同的元组,您可以在内存中缓冲它们一小段时间(根据您的应用程序逻辑总结它们,无论您可以做什么),并将聚合结果发送到MySql每一个。
另一种可能的方法是检查花费时间的是处理实际查询还是建立连接。如果是后者,你可以使用一种方法来汇集多个连接并重用它们,这也可能会加快速度。