4

CSVファイルに保存されているAzureテーブルを保存して読み取るプログラムを作成しています。私が入手したのは、さまざまな数の列、および3kから50kの行を持つことができるCSVファイルです。私がする必要があるのは、Azureテーブルにそのデータをアップロードすることです。これまでのところ、データのアップロードと取得の両方を行うことができました。私はRESTAPIを使用しており、アップロードには、リクエストごとに100行のXMLバッチリクエストを作成しています。アップロードに少し時間がかかることを除けば、これで問題なく動作します。3k行の場合、約30秒かかります。それをスピードアップする方法はありますか?ReadToEnd()(コマンドの)応答を処理するのに最も時間がかかることに気づきました。プロキシをnullに設定すると役立つとどこかで読んだことがありますが、私の場合はあまり効果がありません。

また、XMLリクエスト全体をblobにアップロードし、そこから実行できることもどこかで見つかりましたが、そのための例は見つかりませんでした。

        using (Stream requestStream = request.GetRequestStream())
        {
            requestStream.Write(content, 0, content.Length);
        }

        using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) 
        { 
            Stream dataStream = response.GetResponseStream();
            using (var reader = new StreamReader(dataStream))
            {
                String responseFromServer = reader.ReadToEnd();
            }
        }

Azureテーブルからデータを取得する場合、リクエストごとに1000個のエンティティを取得できました。それに関しては、3k行のCSの場合は約9秒かかります。また、ストリームから読み取る場合にもほとんどの時間がかかります。私がコードのこの部分を(再びReadToEnd())呼んでいるとき:

        response = request.GetResponse() as HttpWebResponse;
        using (StreamReader reader = new StreamReader(response.GetResponseStream()))
        {
             string result = reader.ReadToEnd();
        }

任意のヒント?

4

1 に答える 1

0

あなたがRESTAPIを使用していると述べたように、クライアントライブラリを使用する場合とは異なる方法でパフォーマンスの向上を実装するために、追加のコードを記述し、独自のメソッドに依存する必要がある場合があります。あなたの場合、ここで説明されているように、すでにビルドされた機能を使用して挿入、アップサートなどを迅速に行うことができるため、ストレージクライアントライブラリを使用するのが最適です。

ただし、ストレージクライアントライブラリとADO.NETを使用している場合は、AzureAccessのパフォーマンスを向上させるためのサポートされている方法としてWindowsAzureテーブルチームによって作成された以下の記事を使用できます。

WindowsAzureテーブルの.NETおよびADO.NETデータサービスのパフォーマンスに関するヒント

于 2012-10-09T00:12:14.757 に答える