我们的mysql主机具有并发数据库连接的限制。由于扩展该限制相当昂贵,因此出现了以下问题:
的信息: 我有一个网络应用程序(由外部编码器开发 - 如果你可能想知道这个问题)。
Web应用程序分布并安装在许多服务器上(每个用户都将其安装在PC上)。这些卫星正在将数据发送到mysql数据库。现在卫星直接发布到数据库中。为了提高安全性和错误处理能力,我希望将卫星发布到XML-rpc(wordpress api),然后再将其发布到数据库中。
问题: 这样的api会减少并发连接的数量吗? (现在每个卫星直接连接。就像1个用户= 1个连接)
如果有10个卫星发布到一个文件,则此文件处理数据并将其发布到数据库中 - >这是一个连接吗? (或处理了与不同数据集一样多的连接。)
如果api节流一点,怎么办,因为一次只发布一次。这会导致只有一个连接吗?
任何指针都非常感谢! 提前谢谢!
答案 0 :(得分:1)
如果要改善与数据库的并发连接(因为事实是,创建与数据库的连接是“昂贵的”)。您应该考虑使用ConnectionPool
(example与Java)。
如何计算并发数据库连接?
concurrency http://iforce.co.nz/i/nsullipd.twc.png
A connectionless
服务器
A connection-oriented
服务器
设计和效果问题
数据库连接可能成为瓶颈。这可以解决 使用连接池。
可以使用PreparedStatements重新编译已编译的SQL语句 而不是陈述。这些陈述可以参数化。
连接通常不是由servlet直接创建的 使用工厂(DataSource)创建或从命名服务获得 (JNDI)。
释放连接很重要(关闭它们或将它们返回到 连接池)。这应该在finally子句中完成(以便完成 在任何情况下)。请注意,close()也会抛出异常!
try
{
Console.WriteLine("Executing the try statement.");
throw new NullReferenceException();
}
catch (NullReferenceException e)
{
Console.WriteLine("{0} Caught exception #1.", e);
}
catch
{
Console.WriteLine("Caught exception #2.");
}
finally
{
Console.WriteLine("Executing finally block.");
}
开发OO和OO之间的接口时存在各种问题 RDBMS。这被称为“范式不匹配”。主要问题是 数据库使用值引用,而OO语言使用引用 地址。所谓的中间件/对象持久性框架软件 试图缓解这种情况。
Dietrich,R。(2012)。 Web应用程序体系结构,服务器端脚本Servlet。北帕默斯顿:梅西大学。
答案 1 :(得分:1)
这取决于您实施集中服务的方式。
如果收到请求后的服务立即将数据发布到mysql,如果同时发出请求,您可能会有很多连接。但是使用连接池可以精确控制您将拥有多少个打开的连接。在限制中,您只能打开一个连接。如果有许多并发请求,这可能会导致争用,因为每个请求都必须等待释放连接。
如果服务收到请求,将它们存储在某个地方(数据库除外),并以块的形式处理它们,您也可以只有一个连接。但是这种情况实现起来比较复杂,因为你必须控制对临时数据缓冲区的访问(读写)。