当前位置: 首页 > 面试题库 >

我可以将Parallel.For与sql命令一起使用吗?

广绪
2023-03-14
问题内容

我有一类范围

public class avl_range
{
    public long start { get; set; }
    public long end { get; set; }
}

如果我使用正常的FOR工作原理是完美的,但是必须等待每个命令完成并且每个查询需要8秒钟,所以10个查询需要80秒钟。

在并行版本中,如果仅打印范围,则效果很好,但如果尝试执行命令,则说明该过程已在进行中。

{“操作已经在进行中。”}

我该如何解决?

var numbers = new List<avl_range>();
using (var conn = new NpgsqlConnection(strConnection))
    {
        conn.Open();

        Action<avl_range> forEachLoop = number => //Begin definition of forLoop
        {
             // only the console write line works ok
            Console.WriteLine(number.start + " - " + number.end);

            using (var cmd = new NpgsqlCommand())
            {
                cmd.Connection = conn;                            
                cmd.CommandText = String.Format( "SELECT * FROM avl_db.process_near_link({0}, {1});"
                                                 , number.start
                                                 , number.end);
                // here cause the error.
                using (var reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        Console.WriteLine(reader.GetString(0));
                    }
                }
            }
        };

        Parallel.ForEach(numbers, forEachLoop);
    }
 );

问题答案:

Npgsql连接不能同时使用-在任何给定时间点只能运行一个命令(换句话说,没有MARS支持)。

打开多个连接以并行执行查询可能绝对有意义。尽管建立新的物理连接非常昂贵,但是连接池非常轻巧,因此重用物理连接的开销很小。不执行此操作的主要原因是,如果您需要在同一事务中进行多个操作。



 类似资料:
  • 问题内容: 我正在使用BeautifulSoup抓取网址,并且我有以下代码 现在在上面的代码中,我们可以用来获取标签和与其相关的信息,但是我想使用xpath。是否可以将xpath与BeautifulSoup一起使用?如果可能的话,任何人都可以给我提供示例代码,以使其更有帮助吗? 问题答案: 不,BeautifulSoup本身不支持XPath表达式。 另一种库,LXML, 不 支持的XPath 1.

  • 就像在主题中一样,我可以使用Thymeleaf布局方言和spring吗?我必须使用Spring标准方言吗? 网上有这么多的资料,这让我很困惑。 我已经开始使用布局方言,但我无法使用整个应用程序。 这是我的模板主文件: 以及控制器返回的我的示例主体文件: 但不幸的是,这段代码只适用于布局方言。 有人能帮我把代码转换成spring标准方言吗? 我的手机配置:

  • 问题内容: 我正在使用大猩猩架构根据用户的表单提交来填充结构。我的结构包含,并且我目前收到以下错误: 如何在要使用大猩猩架构填充的结构中使用? 问题答案: 我创建了一个要点(https://gist.github.com/carbocation/51b55297702c7d30d3ef),它显示了解决此问题的一种方法。您需要为以下四种类型的每一种创建一个:sql.NullString,sql.Nu

  • 问题内容: 我查看了Google Cloud SQL的文档和各种搜索,但无法确定是否可以将SQLAlchemy与Google Cloud SQL一起使用,如果可以,则连接URI应该是什么。 我正在寻找使用Flask-SQLAlchemy扩展,并且需要这样的连接字符串: 我看到了Django示例,但看起来配置使用的样式与连接字符串不同。 https://developers.google.com/c

  • 问题内容: 是否可以使用Node.js在服务器端使用jQuery选择器/ DOM操作? 问题答案: 似乎有一个重大更新,导致原来的答案不再起作用。我找到了这个答案,解释了现在如何使用。我已经在下面复制了相关代码。 注意:原始答案没有提及你还需要使用安装

  • 我需要一些目前在JavaFX中找不到的功能。比如机器人或托盘图标。 我知道这些工具确实适用于JavaFx应用程序。但是可以使用它们吗?有什么需要我考虑的吗?