很多insertQuerys - 效率

时间:2013-11-04 22:33:33

标签: c# sql-server oledb

我有一个静态方法,它打开与SQL Server的连接,写入日志消息并关闭连接。 我从整个代码中平均称呼这种方法(平均每2秒)。

问题是 - 效率如何? 我想也许最好积累一些日志并用一个连接插入它们?

但是我必须将它们保存在某个地方(xml?),这也要花费。

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

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;
}

2 个答案:

答案 0 :(得分:3)

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

每隔2秒插入一条记录肯定是SQL Server可以正常处理的事情,即使您每次都打开一个连接。您当时插入一条记录,甚至不会出现明显的锁定问题等。

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


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

答案 1 :(得分:0)

没有像mongo DB这样的sql会更好。

否则2秒没什么大不了的,如果你想避免对数据库进行任何类型的加载,将所有内容存储在文件中并在非高峰时段批量传输。