为什么我的方法在Azure中运行时会卡住?

时间:2016-09-20 08:53:26

标签: c# sql-server entity-framework azure

我有一个执行以下代码的方法:

var subresulta1 = (from s in surveys
            select new SurveyViewModel()
            {
                Id = s.Id,
                Name = s.Name.Translation(Language.En),
                IsActive = s.IsActive,
                Locations = (from l in resulta.Select(a => a.Question.Location).Distinct()
                    select new LocationViewModel()
                    {
                        Id = l.Id,
                        Name = l.Name.Translation(Language.En),
                        Questions = (from q in resulta.Select(a => a.Question).Distinct()
                            where q.LocationId == l.Id
                            select new QuestionViewModel()
                            {
                                Text = q.QuestionText.Translation(Language.En),
                                Scores = (from a in resulta
                                    where a.QuestionId == q.Id
                                    select new ScoreViewModel()
                                    {
                                        Value = (int) a.Value,
                                        PositionId = a.SurveyAnswers.PositionId,
                                        Date = a.SurveyAnswers.CreatedDate,
                                        Location = new LatLonViewModel()
                                        {
                                            Latitude = a.SurveyAnswers.Latitude,
                                            Longitude = a.SurveyAnswers.Longitude
                                        }
                                    }).ToList()
                            }).ToList()
                    }).ToList()

            }).ToList();

当我在我的测试计算机(带有SQL Server 2012的Windows Server 2008 R2)上运行它时,需要大约3秒才能完成。当我将其作为连接到Azure SQL DB的应用服务运行时,它在约4分钟后完成。应用服务器定价层是"标准:1大"和DB服务器" S2",所以我猜这些机器的性能不是问题。当然,两个数据库中的数据是相同的。有没有人遇到类似的问题?

修改 我不认为这是SQL服务器问题。我认为这是应用程序问题。我重新编写代码以首先从DB获取所有数据然后应用所有逻辑。这完成得更快(30秒),但仍然无法与我自己的服务器的性能相比。任何想法都受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

问题是2倍,但最大的问题是Azure中应用和数据库实例的地理位置。下次在Azure中创建Web应用程序时,请确保Web应用程序和数据库服务器位于同一区域(例如西欧)。要小心,因为Azure默认会尝试放置随机内容(在我的情况下,它是中/西美国/巴西)。