0

令我遗憾的是,我在 Azure 托管、MVC 3、SQL Azure 支持的开发中使用了最新的 Universal Providers 成员管理。我编写了一个从 CSV 文件批量创建用户的例程。解析文件并填充模型。然后我遍历创建用户的集合。

花费大量时间的关键线是标准

Membership.CreateUser(
   model.UserName, 
   model.Password, 
   model.Email, 
   null, 
   null, 
   model.IsApproved,
   out createStatus);

即使在“大型”4 核服务器上,这一行也可能需要将近 1 秒才能完成。这意味着 10,000 个用户需要将近 3 个小时。如果可以的话,直接对数据库进行操作可能需要几分钟。

更糟糕的是,我还需要检查现有用户并更新他们。我已经放入了必要的索引,并且数据库非常快。坦率地说,这个提供商能做什么?

我做错了什么,还是这个提供者对大型系统完全没用?其他人有这些问题吗?

我什至不会进入配置文件提供程序,我只想说我自己写了!

4

1 回答 1

2

虽然我之前没有使用过该提供程序,但关键是同时创建多个用户。每个用户 1 秒是合理的。此外,大部分时间都花在等待数据库返回上。当当前线程正在等待数据库返回时,我建议你创建一个新线程开始创建另一个用户。所以不要在普通的foreach循环中逐个创建用户,请使用Parallel.ForEach,它会自动并行创建用户,您可以参考http://msdn.microsoft.com/en-us/library/ dd460720.aspx获取示例。

此致,

明旭。

于 2012-04-19T07:15:49.750 回答