1

私は自分のプロジェクトのBrightStar DBを評価しようとしていましたが、最初に行ったことは次のとおりです-

brightstar DB (server sw) を使用して、SQL Server データベース テーブルをデフォルト ストア、つまりファイルの場所 ( C:\Program Files\BrightstarDB\Data) に保存し、SQL Server データベースと比較してパフォーマンスの向上を測定するために、メモリと SQL Server の両方でテーブルをクエリして、グリッドビューにロードします。

驚いたことに、SQL Server から直接データをロードするのにかかる時間は、メモリ db の半分です。これがパフォーマンスをチェックする正しい方法であるかどうかはわかりません。誰かがメモリ内で作業した経験がある場合は、ガイドしてください。

以下は、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)
        {
        }
}
4

1 に答える 1

2

ここに誤解があると思います。BrightstarDB はインメモリ データベースではありません。実際、完全にトランザクションの永続的なデータ ストアです。そのため、ディスク アクセスのペナルティを支払う必要があります。私のテストでは、BrightstarDB は一般的にディスクにバインドされていることがわかりました...高速ディスク/SSD で実行すると、パフォーマンスが大幅に向上しますが、SQL Server にも同じことが当てはまると思います。

alroc が言及しているように、アプリケーションが使用するクエリの種類をベンチマークし、BrightstarDB が提供する他の機能とパフォーマンスの考慮事項のバランスをとる方が良いと思います。クエリ。

また、LINQ ではなく SPARQL を使用して BrightstarDB クエリを作成することも検討する必要があります。LINQ クエリは実行前に SPARQL に変換されるため、LINQ を使用するとパフォーマンスが低下します。

于 2013-06-26T13:02:32.673 に答える