4

我正在开发一个会获得很多点击量的 api,所以我缓存了它。每个调用都会有一组 ids 需要在请求本身中传递,并且由于设计问题我不能使用批处理来获取项目。所以我为所有的eventIds多次调用get操作

async function getSummaryFromDax(id) {
        const perf = perfMeasure({enable: true});
        let params = {
            TableName: Table,
            Key: {
                id
            }
        };
        //todo dax not working as expected.
        perf("parallel");
        const result = await daxCacheClient.get(params).promise();
        perf("parallel");

        return {result: result.Item,perf: perf._summary};
    }

此函数模拟功能。我只是硬编码了id。

const {queryStringParameters= {}} = event;
    const {calls = 1, id = "CwjPJ4rcdIOOi3yFhpHhDiHzHKo-w8aRaVAYR"} = queryStringParameters;
    dummy.length = calls;
    dummy.fill(id);
    const proms = dummy.map(async id=>{
        return getSummaryFromDax(id)
    })


    const response = await Promise.all(proms);
    perf("handler");

如果调用 =1,则意味着将完成 1 db get 调用。获得数据库响应所需的时间是2ms。当我增加调用计数时,例如100 ,每次获取操作的平均性能为200 毫秒。为什么会这样?

4

0 回答 0