我一直在试图评估BrightStar公司DB为我的项目最初我所做的是检索数据 -内存数据库慢 - 从DB
使用明耀DB(服务器SW)我存储在我的SQL Server数据库表到其默认存储即文件位置(C:\Program Files\BrightstarDB\Data
),然后衡量与SQL Server数据库相比的性能增益,我试图查询内存和SQL Server中的表,并试图加载到gridview。
令我惊讶的是,我可以看到直接从SQL Server中加载数据的时间是内存数据库的一半。我不知道这是否是正确的方法来检查性能 - 如果任何人有经验在内存中工作,请指导。
下面是用于从SQL Server直接加载的代码,并且在内存中我遵循此链接http://brightstardb.com/documentation/Developing_With_BrightstarDB2.html。
protected void BtnDatabase_Click(object sender, EventArgs e)
{
try
{
GridView2.DataSource = null;
TDNdc = TextBox1.Text;
if (!string.IsNullOrEmpty(TDNdc))
selectCommand = "select * from dbo.TD_List where ID='" + TDNdc + "'";
String connectionString = @"data source=TD-abc\SQLEXPRESS;initial catalog=ScriptSave;integrated security=True";
DateTime varDateTime = DateTime.Now;
dataAdapter = new SqlDataAdapter(selectCommand, connectionString);
// Create a command builder to generate SQL update, insert, and
// delete commands based on selectCommand.
SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);
// Populate a new data table and bind it to the BindingSource.
DataTable table = new DataTable();
// table.Locale = System.Globalization.CultureInfo.InvariantCulture;
dataAdapter.Fill(table);
TimeSpan result = DateTime.Now - varDateTime;
GridView2.DataSource = table;
GridView2.DataBind();
Response.Write("Time Taken to load " + GridView2.Rows.Count + " Record(s) From DB : " + result);
//LblInMem.Text = GridView2.Rows.Count + " Record(s) From DB : " + result;
//Response.Write("Time Taken to load datafrom DataBase " + result.ToString() + "Total Record :" + GridView2.Rows.Count);
}
catch (SqlException)
{
}
}
你有任何号码来支持你的说法吗?您是否加载了一个整数或在100列的10M行上执行复杂的一系列操作?指标? – HABO 2013-03-27 14:00:46
根据你在这里得到的代码,我的猜测是你已经选择了一个糟糕的方式来衡量任何数据库的性能。您是否测试了相同的数据集,使用相同的查询,相同的数据类型,并且多次执行操作(以消除任何首次访问速度下降)?查询优化器对select *'的处理方式与按名称选择字段不同,并不代表查询任何数据库的良好实践。 – alroc 2013-03-27 14:49:29
那么我在相同的查询和数据类型的情况下使用相同的表。我执行了n次,但结果是相同的,无论是当我选择一些500条记录还是一条记录时。我知道select *不是好的做法,因为我只是想知道我在测试场景中使用的性能和观察结果ado对象在内存数据库中的速度要快得多。 – Harry 2013-03-28 02:57:09