大きな文字列を作成する次のコードがあります。すべてのタスクを完了するのに約2秒かかりますが、実稼働サーバーに配置すると、未知のものに応じて10〜20秒かかります。時間は、TimePoint1 から TimePoint2 までで計算されます。
ところで: abstractTable.GetWordCountInList(listID) には 1 行しか含まれていません: return 100;
これを除いて、本番サーバーの他のすべての機能は問題なく動作します。Oracle DB サーバーと Web サーバーは同じマシン上にあり、クエリは約 5000 レコードを返します。製品サーバーのデータは開発サーバーと同じです。
public const string WordXMLItemTemplate = @"<S I=""{0}"" W=""{1}"" L=""{2}"" F=""0"" P=""0"" />";
int totalCounter =0;
int wordCounter = 0;
int listID = 1;
OracleConnection wordLibConn = ConnectionManager.GetNewConnection();
wordLibConn.Open();
try
{
OracleCommand comm = new OracleCommand();
comm.Connection = wordLibConn;
comm.CommandText = "Select WordID from WordTable Order By Lower(Word) ASC";
OracleDataReader dataReader = comm.ExecuteReader();
try
{
// TimePoint 1
while (dataReader.Read())
{
totalCounter++;
wordCounter++;
wordXML = wordXML + string.Format(WordXMLItemTemplate, totalCounter, dataReader[0].ToString(), listID);
if (wordCounter % abstractTable.GetWordCountInList(listID) == 0)
{
wordCounter = 0;
listID++;
}
}
}
finally
{
dataReader.Close();
}
}
finally
{
wordLibConn.Close();
}
// TimePoint 2
私は何ヶ月も問題に苦しんでいました。アドバイスをありがとう。