如何降低 Azure 表存储延迟
Posted
技术标签:
【中文标题】如何降低 Azure 表存储延迟【英文标题】:How to lower Azure Table Storage latency 【发布时间】:2016-11-06 21:06:24 【问题描述】:我正在尝试创建一个基于 NodeJS 的 Web 应用程序应用程序,该应用程序查询包含 1000 个条目的 Azure 表存储。 (我使用的是 Azure 跟踪订阅)
实现的逻辑使用分区键和行键检索唯一实体,因此它应该非常快,并且受到 Troy Hunt 发布的 blog 的启发,我预计延迟时间低于 7 毫秒。
app.get('/pick', function (req, res, next)
var parKey = req.param('parKey');
var rowKey = req.param('rowKey');
var getRes, startTime, endTime, tableSvc;
tableSvc = azure.createTableService().withFilter(retryOperations);
//Timestamp before accessing table storage
startTime = new Date().getTime();
tableSvc.retrieveEntity('lookupTable01', parKey, rowKey,
function (error, result, response)
if (!error)
//Timestamp after returning the result
endTime = new Date().getTime();
getRes = JSON.stringify(result);
res.send("found in " + (endTime - startTime) + " ms " + getRes);
else
//Timestamp after returnung an error
endTime = new Date().getTime();
getRes = JSON.stringify(error);
res.send("Error in " + (endTime - startTime) + " ms " + getRes);
)
我已在同一个西欧数据中心设置 Web 应用程序服务器和存储帐户以获得最佳结果。然而,最低延迟被证明是 47 毫秒(不包括网络延迟)
我还在美国东部数据中心尝试了相同的设置,并发现几乎相同的结果。
【问题讨论】:
如果您编辑问题以显示您的代码,这将非常有帮助。 【参考方案1】:我们通常使用点查询[特殊的分区键和行键]来查询表,就像你做的那样。另一个因素是查询密度。基于分区的query可能很小。影响Azure表存储性能的因素也很多。比如位置、分区命名约定、限制数据返回、表的定义原则等等。有关如何提高 Azure 存储性能的更多详细信息,请参阅document。
【讨论】:
感谢您的帮助。我遵循了文档,但是延迟仍然很高。我将寻找一种不同的解决方案,它允许比 Azure 存储表产品更精细的控制。以上是关于如何降低 Azure 表存储延迟的主要内容,如果未能解决你的问题,请参考以下文章