我已经编写了 C# Job 以逐行读取 IIS 并创建 JSON 并将数据发布到 DB。Job 正在读取 45K 行并且插入操作非常慢。我在工作中启用了并行编程,但性能仍然很慢。完成手术用了将近2个小时。
这是我调用 API 的代码片段:
Parallel.For(0, logV.Count, counter =>
{
Console.WriteLine(JsonConvert.SerializeObject(logV[counter]));
var URL = WebConfigurationManager.AppSettings["URL"];
var client = new RestClient(URL);
var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/json");
request.AddHeader("Authorization", "Basic TEST");
request.AddParameter("application/json", JsonConvert.SerializeObject(logV[counter]), ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine("Lines read" + counter);
});
这是我的 API:
// POST: api/IISLogs
public async Task<IHttpActionResult> Post(IISLog iislog)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
db.IISLogs.Add(iislog);
await db.SaveChangesAsync();
return CreatedAtRoute("DefaultApi", new { id = iislog.Id }, iislog);
}
如何使用单个 HTTPS POST 操作在数据库中进行多次插入,或者如何将方法转换为批处理?