我有一个嵌入式系统,即基本上是一个带有GSM模块的基于ATMEGA的微控制器。 GSM模块利用SIM的GPRS连接将GET请求发送到我服务器上的网页。简单来说,它与从他的移动设备打开该网页的人一样。 当打开该网页时,没有什么特别的事情发生,我只是提取GET参数并更新数据库。现在问题来了。数据库在GoDaddy服务器上联机,当我从GSM设备发送更新请求时,它会挂起4-5秒。有没有其他方法可以更新数据库并节省我的时间?
此外,我想知道,对于在线数据库,需要更多时间, *启动数据库连接,或 *使用UPDATE查询更新表?
答案 0 :(得分:1)
这里发生了很多事情,你可能在很多地方都有问题。解决问题的信息太少了,但这里有一些可能的地方。
显然,您在GoDaddy上遇到来自Web /数据库服务器的网络延迟和一般响应时间的问题。我的第一个问题是MC的响应与通过网页获取调用的比较。
要专门回答您的问题 - 启动数据库连接通常是交易中成本最高的部分。我不确定您在数据库端使用的是什么,因此我无法向您指出具体的资源。我猜MySQL?如果是这样,请查看https://dba.stackexchange.com/questions/16969/how-costly-is-opening-and-closing-of-a-db-connection以获取建议。在我自己的数据库中,我倾向于调整它们的性能。在GoDaddy上,你可以做的很有限。
但是,我将对我上面所说的内容进行一些限定。通常,对数据库的更新不应该那么慢。我们可能正在处理糟糕的数据库设计或者必须具有索引更新的非常大的表。在你的特定情况下再考虑一些事情。另一个需要注意的事项是您可能正在进行更新,如下所示:
update myTable set myField = 1 where somesensor = 'a';
update myTable set myField = 1 where somesensor = 'b';
update myTable set myField = 1 where somesensor = 'c';
.....
并且取决于您正在进行的更新的数量,如何建立连接等,以及您的特定情况的其余部分.....如果您使用MySQL,请查看此示例{{3}为了可能的想法。基准测试!
我建议做一个解释计划,看看发生了什么,看看你能不能解决问题所在(检查你的MySQL版本)。有关语法等,请参阅How to bulk update mysql data with one query?。
确实没有足够的信息可以准确地说出来,但也许这会给你一些想法。祝你好运!