2

我有一个静态方法,可以打开与 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;
}
4

2 回答 2

3

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

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

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


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

于 2013-11-04T22:48:35.343 回答
0

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

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

于 2013-11-04T23:02:02.543 回答