DocumentDb插入性能

时间:2015-08-10 14:49:14

标签: c# performance insert azure-cosmosdb

我使用DocumentDb来存储我的数据,这是我用来在documentdb中插入记录的示例代码。

我正在调用这样的方法

var result = ProcessRequestAsync(() => Client.CreateDocumentAsync("collection link", data)).Result;

并且方法逻辑就像这样

 public async static Task<ResourceResponse<T>> ProcessRequestAsync<T>(Func<Task<ResourceResponse<T>>> request)
            where T : Resource, new()
        {
            var delay = TimeSpan.Zero;
            var minDelayTime = new TimeSpan(0, 0, 1);
            for (; ; )
            {
                try
                {
                    await Task.Delay(delay);
                    return await request();
                }
                catch (DocumentClientException documentClientException)
                {
                    var statusCode = (int)documentClientException.StatusCode;
                    if (statusCode == 429 || statusCode == 503)
                    {
                        delay = TimeSpan.Compare(documentClientException.RetryAfter, minDelayTime) >= 0 ? documentClientException.RetryAfter : minDelayTime;
                    }
                    else
                    {
                        throw;
                    }
                }
            }
        }

将记录插入documentDb需要2秒钟。

但是我在一个循环中重复插入过程,第一个记录需要2秒才能插入,剩下的则需要400ms左右。

我需要添加什么来提高插入速度?

提前致谢。

1 个答案:

答案 0 :(得分:1)

您是否遵循了此处列出的效果提示:http://azure.microsoft.com/blog/2015/01/20/performance-tips-for-azure-documentdb-part-1-2/http://azure.microsoft.com/blog/2015/01/27/performance-tips-for-azure-documentdb-part-2/?你应该看到&lt;使用DocumentDB写入10毫秒,除了连接的网络延迟。

如果您可以发布完整的样本,我们可以提供进一步的帮助。像Ryan提到的那样,第一次调用的时间越长,可能是客户端的初始化。上面的博客也解释了如何避免这种情况。