5

私は、データベース接続が最もよく使用され、閉じられていることを理解しています。ただし、SQLite では、これが当てはまるかどうかわかりません。Using Connection ステートメントを使用してすべてのクエリを実行します。したがって、接続を開いてから閉じて、これを行うことは私の理解です。SQLite と最適な使用法に関しては、使用中のプログラムの期間中、1 つの永続的な接続を開く方が良いですか、それとも現在使用している方法を引き続き使用する方がよいでしょうか。

私は、約 2 ギガのかなり大きな DB を持つ VB.net Windows プログラム用のデータベースを使用しています。

私の現在の接続方法の例

  Using oMainQueryR As New SQLite.SQLiteCommand
            oMainQueryR.CommandText = ("SELECT * FROM CRD")
            Using connection As New SQLite.SQLiteConnection(conectionString)
                Using oDataSQL As New SQLite.SQLiteDataAdapter
                    oMainQueryR.Connection = connection
                    oDataSQL.SelectCommand = oMainQueryR
                    connection.Open()
                    oDataSQL.FillSchema(crd, SchemaType.Source)
                    oDataSQL.Fill(crd)
                    connection.Close()
                End Using
            End Using
    End Using
4

3 に答える 3

1

すべてのデータベースと同様に、状況によって異なります。この sqlite の特定のケースでは、確認する必要がある 2 つの「依存関係」があります。

  1. データベースの唯一のユーザーですか?
  2. 暗黙のトランザクションはいつコミットされますか?

最初の項目については、データベースの他のユーザーがいる場合、または複数のプロセスが同時に sqlite データベース ファイルにアクセスする可能性がある場合は、おそらく異なる接続を頻繁に開いたり閉じたりする必要があります。

2 番目の項目については、sqlite が具体的にどのように動作するかわかりません。一部のデータベース エンジンは、接続が閉じられるまで暗黙のトランザクションをコミットしません。これが sqlite の場合である場合、接続をもう少し頻繁に閉じたいと思うでしょう。

.Net での接続は短命でなければならないという考えは、主に Microsoft Sql Server に適用されます。これは、Sql Server の .Net プロバイダーも接続プールと呼ばれる機能を利用できるためです。Sql Server 以外では、このアドバイスにまったくメリットがないわけではありませんが、当然のことではありません。

于 2013-01-18T21:29:48.960 に答える
1

1 人のユーザーだけが使用するローカル アプリケーションの場合は、アプリケーションの存続期間中、1 つの接続を開いたままにしておくのがよいと思います。

于 2013-01-18T21:27:49.367 に答える
1

ほとんどのデータベースでは、「最適に使用され、閉じられている」という考えは、最小数の接続のみを開くことでメモリを節約するという観点から来ていると思います。

実際には、接続を開くと大量のオーバーヘッドが発生する可能性があるため、必要なときに行う必要があります。これが、管理対象サーバー インフラストラクチャ (weblogic など) が接続プールの使用を促進する理由です。このようにしてN、いつでも利用可能な接続を確立できます。リソースを「浪費」することはありませんが、グローバル レベルでリソースを管理する責任も負わされません。

于 2013-01-18T21:28:18.227 に答える