c# - 大量的insertQuerys——效率

标签 c# sql-server oledb

我有一个静态方法,可以打开与 SQL Server 的连接、写入日志消息并关闭连接。 我在整个代码中多次调用此方法(平均每 2 秒一次)。

问题是 - 它有效吗? 我想也许积累一些日志并通过一个连接插入它们会更好?

但是我必须将它们保存在某个地方(xml?),这也很昂贵。

那么......有效的方法是什么? 写入 xml\file\whatever,然后在一个连接中批量更新 或打开连接进行任何小更新?

public static bool writeLog(string TaskName="MainApp", string LogMessage=null)      
{
    string logCmd = ...
    OleDbConnection conn = ...
    OleDbCommand sqlCmd = new OleDbCommand(logCmd,conn);
    try
    {
        conn.Open();
        sqlCmd.ExecuteNonQuery();
    }
    catch (System.Exception ex)
    {
        Console.WriteLine(ex.ToString());
        Console.ReadLine();
    }
    finally
    {
        if (conn.State == ConnectionState.Open)
        {
            conn.Close();
        }                
    }
    return isSuccses;
}

最佳答案

很难说您对效率的期望是什么,但这是一个一般性评论。

即使每次都打开连接,SQL Server 也可以毫无问题地处理每 2 秒插入一条记录。您一次插入一条记录,甚至不会出现明显的锁定问题等。

如果您要更改架构,则维护数据完整性会变得更加复杂和困难(您必须将值存储在某种缓存中,并确保该缓存不会丢失,等等)。在本例中这似乎没有必要。


顺便说一句,您可能希望切换到 native SQL Server 提供程序并使用 SQLConnection 来提高性能。

关于c# - 大量的insertQuerys——效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19778565/

相关文章:

sql-server - SQL Server 目标与 OLE DB 目标

c# - HttpClient PutAsync 不向 api 发送参数

sql - 在 SQL Server 中通过标准差消除异常值

SQL Server 更新后触发器

delphi - 尝试访问 Delphi 7 中的 Excel 表时的提供程序选择

c# - 如何向链接到另一个表的 MS Access 表添加行?

c# - 在 gridview (Asp.net) c# 中获取选中复选框的 id

c# - 从字符串中删除 unicode 代码的最快方法

c# - ASP.NET Core 发布和启动设置

c# - SQL Server 和 C# WinForms 错误