Python服务器有效地处理同时的SQL请求

时间:2013-05-21 15:29:06

标签: python mysql

有一台服务器应该能够同时处理数百个请求,我决定在python中执行此操作,目前它已启动并运行,现在我愿意优化此代码,因为我想做这个尽可能轻量化。

具有以下服务器布局:

Incoming connection
       ||
       \/
 _________________
| Handling server |  <|
|_________________|   |
       ||             |
       \/             |
      FORKING --------/
       ||
       \/
 _________________  30 Queries  ______________
| Dataprocessing  | ---------->| MySQL-Server |  
|_________________| <----------|______________| 
       ||             
       \/       
    RESPONDING & closing connection

现在发生的是,如果 x 同时传入连接,MySQL服务器会在很短的时间内变得非常慢。

现在我正在寻找一种动态“合并”不同mysql请求或尽可能减少工作量的方法。

我可以提出的一个问题的例子是:

如何在给定时间范围内(5秒?)处理许多MySQL请求,同时尽可能降低MySQL服务器上的工作负载

1 个答案:

答案 0 :(得分:3)

没有简单/一刀切的方法来实现这一目标,所以我建议您采用一些方法来适应您的特定情况。

减轻MySql服务器负载的最佳方法是在中间使用缓存层,如果适用于您的情况,但它取决于。

  • 场景1:有很多select次查询

如果您提取的信息与select查询的比率相比没有经常更改,则可以使用缓存。

  • 场景2:大量insert / update语句

这很棘手,如果多个语句涉及更改相同的元组,您可以在内存中缓冲它们一小段时间(根据您的应用程序逻辑总结它们,无论您可以做什么),并将聚合结果发送到MySql每一个。

另一种可能的方法是检查花费时间的是处理实际查询还是建立连接。如果是后者,你可以使用一种方法来汇集多个连接并重用它们,这也可能会加快速度。