Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 很多insertQuerys—效率_C#_Sql Server_Oledb - Fatal编程技术网

C# 很多insertQuerys—效率

C# 很多insertQuerys—效率,c#,sql-server,oledb,C#,Sql Server,Oledb,我有一个静态方法,可以打开到SQL Server的连接,写入日志消息并关闭连接。 我在整个代码中多次调用此方法(平均每2秒调用一次) 问题是——效率高吗? 我想也许积累一些日志并用一个连接插入它们会更好 但是,我必须将它们保存在某个地方(xml?),这也需要成本 所以。。这样做的有效方法是什么? 写入xml\文件\任何内容,然后在一个连接中使用批量更新 或者打开连接进行任何小的更新 public static bool writeLog(string TaskName="MainApp", st

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

问题是——效率高吗? 我想也许积累一些日志并用一个连接插入它们会更好

但是,我必须将它们保存在某个地方(xml?),这也需要成本

所以。。这样做的有效方法是什么? 写入xml\文件\任何内容,然后在一个连接中使用批量更新 或者打开连接进行任何小的更新

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秒插入一条记录。一次插入一条记录,甚至不会出现明显的锁定问题等

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



另一方面,您可能希望切换到本机SQL Server提供程序,并使用
SQLConnection
提高性能。

这里没有像mongo DB这样的SQL更好的选择


否则,2秒也没什么大不了的,若您希望避免数据库上的任何负载,那个么将所有内容存储在文件中,并在非高峰时间批量传输它们