C#Sql LocalDB应用程序性能低

时间:2016-04-13 18:29:59

标签: c# sql-server-express localdb sql-server-2014-localdb

我是全新的sql /数据库应用程序,我正在尝试使用Visual Studio 2015 C#进行简单的联系人管理应用程序。我正在使用SQL Express LocalDB'。我在谷歌上看到它是出于开发目的,但微软也提到它也可以用于生产目的。

我的问题是,当我从开发系统中试用应用程序时,应用程序第一次加载需要几秒钟,但之后每个查询都会快速运行。当我在我的朋友系统上尝试这个时,每次尝试使用任何查询时都需要时间。该数据库只有20-30条记录。

我使用' new SqlConnection'创建新连接。然后执行由新的SqlCommand'创建的命令。并在执行查询后关闭连接。

以下是我的应用

的代码段
SqlConnection sqlConnection = new SqlConnection(@"Data Source = (LocalDB)\MSSQLLocalDB; AttachDbFilename = ""C:\ContactsDB.mdf""; Integrated Security = True; Connect Timeout = 30";);
SqlCommand sqlCmd = new SqlCommand();
sqlCmd.Connection = sqlConnection;

sqlCmd.CommandText = "SELECT Id, first_name, last_name from ContactsMaster ORDER BY first_name";
sqlConnection.Open();
SqlDataReader reader = sqlCmd.ExecuteReader();
try
{
    while (reader.Read())
    {
        ListViewItem lvi = new ListViewItem(reader["first_name"]);
        listViewItems.Add(lvi);
        lvi.SubItems.Add(reader[0].ToString());
    }
}
finally
{
    reader.Close();
}
sqlConnection.Close();

Q值。应用程序运行时,我应该始终保持连接打开吗?我不认为这应该被建议。好像app crashes数据库可能会损坏。

ppl表示LocalDB每隔新毫秒关闭一次连接的背景之一。我应该每隔几毫秒对数据库进行一次ping操作吗?或者我根本不应该在生产中使用localdb?

我想让应用程序使得数据库先决条件的要求非常低。像LocalDB一样,安装真的是无缝的。

我没有使用SQL Server Express,Express安装是否也像LocalDB一样无缝,我是否可以在Express中使用类似LocalDB的连接字符串,直接提供.mdf文件名?

3 个答案:

答案 0 :(得分:0)

ddbb性能需要考虑很多事情,这不是一个简单的问题。对于如此少量的记录,不应该存在性能问题。尝试将ddbb文件存储在与OS磁盘不同的另一个磁盘中,甚至更好,将数据文件和日志文件也放在不同的磁盘中。 关于您的问题,必须始终关闭连接并将其正确放置在finally块或使用块内。 Sql Express非常易于安装,并且还使用连接字符串,这是它可以在整个网络中使用的最大区别。

答案 1 :(得分:0)

最后转移到SQLite,与SQLLocalDB相比,速度更快。

答案 2 :(得分:0)

localdb具有自动关闭。默认值为5分钟。您可以将其设置为更高的值(即:12小时)。 最多是65535分钟。

请参阅:How to prevent SQL Server LocalDB auto shutdown?

如果我没记错的话,sqlexpress自动关机也要1个小时。

我的电脑上的症状:

第一次打开速度慢10到30秒。如果我在不到1秒后立即重新打开应用程序。如果我等一会又很慢