我有一个静态方法,它打开与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;
}
答案 0 :(得分:3)
很难说你对效率的期望是什么,但这是一般性评论。
每隔2秒插入一条记录肯定是SQL Server可以正常处理的事情,即使您每次都打开一个连接。您当时插入一条记录,甚至不会出现明显的锁定问题等。
如果要更改体系结构,将使其更复杂,更难以维护数据完整性(您必须将值存储在某种缓存中并确保此缓存不会丢失等)。在这种情况下,这似乎没有必要。
另外,您可能希望切换到本机SQL Server提供程序并使用SQLConnection
来提高性能。
答案 1 :(得分:0)
没有像mongo DB这样的sql会更好。
否则2秒没什么大不了的,如果你想避免对数据库进行任何类型的加载,将所有内容存储在文件中并在非高峰时段批量传输。