我一直在尝试为我的项目评估BrightStar DB,最初我所做的是-
使用brightstar DB (服务器软件)我将SQL Server数据库表存储到其默认存储中,即文件位置(C:\Program Files\BrightstarDB\Data),然后与SQL Server数据库相比,我尝试查询内存和SQL Server中的表,并尝试将其加载到网格视图中。
令我惊讶的是,我可以看到直接从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)
{
}
}发布于 2013-06-26 21:02:33
我认为这里有一个误会。BrightstarDB不是内存中的数据库--事实上,它是一个完全事务性的持久数据存储。所以你仍然要付出磁盘访问的代价。在我的测试中,我发现BrightstarDB通常是磁盘受限的……在快速的磁盘/固态硬盘上运行它确实有助于提高性能,尽管我猜你会发现SQL Server也是如此。
正如alroc提到的,我认为您最好对您的应用程序将使用的查询类型进行基准测试,并平衡性能考虑与BrightstarDB提供的其他特性,您可能(也可能不)认为这些特性会对特定类型的查询造成性能损失。
您还应该考虑使用SPARQL而不是LINQ来编写BrightstarDB查询。使用LINQ会带来性能损失,因为LINQ查询在执行之前会转换为SPARQL。
https://stackoverflow.com/questions/15659978
复制相似问题