首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内存中数据库-从数据库检索数据速度较慢

内存中数据库-从数据库检索数据速度较慢
EN

Stack Overflow用户
提问于 2013-03-27 21:25:29
回答 1查看 1.6K关注 0票数 1

我一直在尝试为我的项目评估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

代码语言:javascript
复制
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)
        {
        }
}
EN

回答 1

Stack Overflow用户

发布于 2013-06-26 21:02:33

我认为这里有一个误会。BrightstarDB不是内存中的数据库--事实上,它是一个完全事务性的持久数据存储。所以你仍然要付出磁盘访问的代价。在我的测试中,我发现BrightstarDB通常是磁盘受限的……在快速的磁盘/固态硬盘上运行它确实有助于提高性能,尽管我猜你会发现SQL Server也是如此。

正如alroc提到的,我认为您最好对您的应用程序将使用的查询类型进行基准测试,并平衡性能考虑与BrightstarDB提供的其他特性,您可能(也可能不)认为这些特性会对特定类型的查询造成性能损失。

您还应该考虑使用SPARQL而不是LINQ来编写BrightstarDB查询。使用LINQ会带来性能损失,因为LINQ查询在执行之前会转换为SPARQL。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15659978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档