我一直在尝试为我的项目评估BrightStar DB,我最初做的是 -
使用brightstar 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)
{
}
}
答案 0 :(得分:2)
我认为这里存在误解。 BrightstarDB不是内存数据库 - 实际上它是一个完全事务性的持久数据存储。因此,您仍需要支付磁盘访问权限。在我的测试中,我发现BrightstarDB通常是磁盘绑定的......在快速磁盘/ SSD上运行它确实有助于提高性能,不过我猜你会发现SQL Server也是如此。
正如alroc所提到的,我认为您最好对应用程序将使用的查询类型进行基准测试,并在性能考虑与BrightstarDB提供的其他功能之间取得平衡,您可能(或可能不会)决定超过性能损失。特定类型的查询。
您还应该考虑使用SPARQL而不是LINQ来编写BrightstarDB查询。使用LINQ会产生性能损失,因为LINQ查询在执行之前会转换为SPARQL。