小编Mik*_*son的帖子

使用MySql Connector/Net和Dapper的非参数SQL变量?

下面的代码生成以下错误:

必须定义参数'@ID'.

我做错了什么或者是不是可以在MySQL查询中使用不是Dapper参数的SQL查询中的变量?

在此示例中,@ Slug是Dapper参数,但@ID不是.我正在使用MySQL所以我不需要DEFINE @ID - 它在第一次使用时被定义.

var sql = @"SELECT @ID := id, slug, Title, Text FROM posts WHERE slug = @Slug;  SELECT * FROM comments where postid = @ID;";
using (var connection = GetOpenConnection())
{
    var posts = connection.QueryMultiple(sql, new { Slug = slug })
        .Map<Post, Comment, int>
        (
        Post => Post.ID,
        Comment => Comment.ID,
        (post, comments) => { post.Comments = comments; }
        );
    return posts.FirstOrDefault();
}
Run Code Online (Sandbox Code Playgroud)

sql parameters dapper

7
推荐指数
1
解决办法
2628
查看次数

RavenDB - 写入/保存性能慢?

我开始将一个简单的ASP.NET MVC Web应用程序从SQL移植到RavenDB.我注意到SQL上的页面比RavenDB上的页面更快.

使用Miniprofiler进行深入研究似乎罪魁祸首是需要做的时间:session.SaveChanges(150-220ms).在RavenDB中保存的代码如下所示:

var btime = new TimeData() { Time1 = DateTime.Now, TheDay = new DateTime(2012, 4, 3), UserId = 76 };
session.Store(btime);
session.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

身份验证模式:当RavenDB作为服务运行时,我假设它使用"Windows身份验证".当部署为IIS应用程序时,我只使用了默认值 - 即"Windows身份验证".

背景:数据库机器与作为Web服务器的开发机器分开.数据库在同一数据库计算机上运行.测试数据非常小 - 比方说100行.查询很简单,返回一个具有12个48字节大小的属性的对象.使用fiddler对RavenDB运行WCAT测试会在数据库计算机上产生更高的利用率(与SQL相比),并且页面数量会少得多.我尝试将Raven作为服务和IIS应用程序运行,但没有看到明显的区别.


编辑

我想确保a)我的一台机器或b)我创建的解决方案不是问题.所以,决定尝试使用Michael Friis创建的另一个解决方案在Appharbor上进行测试:RavenDN示例应用程序,只需将Miniprofiler添加到该解决方案中.迈克尔是Apharbor很棒的人之一,如果你想看看它,你可以在这里下载代码.

Appharbor的结果

你可以在这里试试(现在):

  1. 阅读:(7-12ms,少数异常值为100 + ms).

  2. 写/保存:(197-312ms)*WOW需要很长时间才能保存*.要测试保存,只需创建一个新的"thingy"并保存它.你可能想要至少两次这样做,因为第一个通常需要更长时间,因为应用程序预热.

除非我们都做错了,否则RavenDB的保存速度非常慢 - 保存速度比读取慢10-20倍.鉴于它异步重新索引,这似乎非常缓慢.

有没有办法加快速度或预期?

performance ravendb

7
推荐指数
1
解决办法
2947
查看次数

标签 统计

dapper ×1

parameters ×1

performance ×1

ravendb ×1

sql ×1