Хранимая процедура Cosmos Db RU плата выше, чем эквивалентный запрос через SDK или портал? - PullRequest
0 голосов
/ 28 декабря 2018

Ожидается ли, что запрос, выполненный через хранимый процесс, имеет более высокую стоимость RU (почти в два раза), чем запрос того же запроса, выполненного через sdk или портал?

Этот тестовый код показывает выполнение обоих случаевзапрос к одному документу с помощью sectionKey и идентификатора документа.

Простой запрос, выполняемый с помощью хранимого процесса

Простой хранимый процесс для проверки выполнения одного документа по идентификатору.Поскольку это выполняется в пределах одного раздела, это должно привести к прямому запросу к разделу и идентификатору документа.

function testProc(id, props) {
    var collection = getContext().getCollection();
    var collectionLink = collection.getSelfLink();
    var response = getContext().getResponse();

    // Validate input.
    if (!id) throw new Error("The id is undefined or null.");
    if (!props) throw new Error("The update is undefined or null.");

    tryQuery();

    function tryQuery() {
         var query = {query: "select * from root r where r.id = @id", parameters: [{name: "@id", value: id}]};

         var isAccepted = collection.queryDocuments(collectionLink, query, function (err, documents, responseOptions) {
             if (err) throw err;

             if (documents.length == 1) {
                 // Update props
             } else {
                 // Else a document with the given id does not exist..
                 throw new Error("Document not found.");
             }
         });

         // If we hit execution bounds - throw an exception.
         // This is highly unlikely given that this is a query by id; but is included to serve as an example for larger queries.
         if (!isAccepted) {
             throw new Error("The stored procedure timed out.");
         }
     }
}

Плата за запрос: 5.68 RU

Прямой запрос на портале

SELECT * FROM c where c.partitionKey = 'Tenant_8_u768f5c6b-ef6d-4cd9-8ad0-ae0c68eb9887@mail.com' and c.id = 'c12a3dbd-ad19-41d6-971b-79e0c7acec41'

Плата за запрос: 2.890 RU

Я могу принять только в соответствии с единицами запроса космоса и документацией о пропускной способности это несоответствие возникает из-за физических издержек вычислительных ресурсов (ЦП / памяти), необходимых для запуска самого хранимого процесса.

Для простого запроса вытащить документ по разделу и идентификатору кажетсядовольно высокий, хотя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...