問題タブ [database-performance]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
3221 参照

sql - FAST_FORWARD カーソルが作業テーブルを持つのはいつですか (これは避けるべきものですか)?

バックグラウンド

合計クエリを実行して実験しているときに、推定プランに「フェッチクエリ」が表示されることがあることに気付きました

フェッチ

実際の計画では、クラスター化されたインデックス スキャンからのフェッチが繰り返されていることが示されています。

フェッチスキャン

他の場合 (TOPクエリに a を追加する場合など) には、見積もられた計画に、作業テーブルにデータを入力する "Population Query" ステージが表示されます。

フェッチして入力

実際の計画では、クラスター化されたインデックス スキャンを示して作業テーブルにデータを入力し、その作業テーブルに対してシークを繰り返します。

シーク

質問

  1. あるアプローチを他のアプローチよりも選択する際に、SQL Server はどのような基準を使用しますか?
  2. 最初の方法 (追加の作業テーブル作成ステップなし) がより効率的であると考えるのは正しいでしょうか?

(おまけの質問: 最初のクエリの各スキャンが 2 つの論理読み取りとしてカウントされる理由を誰かが説明できれば、これも非常に啓発的なものになる可能性があります)

追加情報

カーソルが動的プランまたは静的プランのいずれかを使用できることを説明するこの記事を見つけました。FAST_FORWARDこの場合の最初のクエリは動的プランを使用しており、2 番目のクエリは静的プランを使用しているようです。

また、試してみると

カーソルは暗黙的にカーソルに変換されるkeysetため、おそらくルーベンの回答の理由により、構造が動的カーソルに対してサポートされていないことは明らかですTOP-これについての決定的な説明をまだ探しています。

ただし、動的カーソルは静的カーソル ( source 1source 2 ) よりも遅くなる傾向があることも読みました。これは、静的な種類がソースデータを読み取り、コピーしてからコピーを読み取る必要があることを考えると、驚くべきことのように思えます。ソースデータを読み取ります。前に参照した記事では、動的カーソルが. 誰でもこれらが何であるか説明できますか? それは単なる RID か CI キーか、それとも別のものですか?markers

脚本

0 投票する
1 に答える
329 参照

c# - Entity Framework 4.1およびデータベース(MySQL)のパフォーマンスの問題{テーブルに320000行が含まれている場合に最初のレコードを返すようにクエリを高速化する方法}

こんにちは私はMySQLConnector/Net6.3.5とEntityFramework4.1を使用しています。

DBには、約320000行のテーブルがあり、列ごとに単純なクエリを実行します。

パフォーマンスに少し問題があります。クエリをどのように高速化するか、いくつかの手法や方法がありますか?

クエリのタイムアウトは約6.3秒で、サーバーはローカルではありません。

これが私が使用する方法です:

0 投票する
2 に答える
1079 参照

mysql - SQL パフォーマンス: どちらが速いですか? IN() と JOIN

これは、私が決定的な答えを得たことのない質問です。この例では MySQL を使用しています。

かなり大きな値のセットが与えられた場合 (500 としましょう)。IN() 句でこれらの値を使用してテーブルを検索する方が速いですか?

または、メモリ内に一時テーブルを作成し、それに値を入力して、検索対象のテーブルに結合します。

どちらの方法でも同じ結果セットが生成されます。

独自の基本的なベンチマーク テストをいくつか行ったところ、500 を超える値を処理する場合、IN() 句よりも一時テーブルを使用する方が速くなることがわかりました。

誰かが MySQL の内部の仕組みと、この質問に対する適切な答えを説明できますか?

ありがとう、レオ

0 投票する
1 に答える
2402 参照

mysql - mysqlチューニング変数-現在およびデフォルト

私はかなりバニラのmysql5.1セットアップを持っており、それを調整しようとしています。この便利なスクリプトを見つけました

それは次の提案をしました:

これらが何を意味し、現在何に設定されているかを読んで、「mysqladmin変数」を実行できることがわかりました。

私の現在の値は次のとおりです。

これらをどのように読むのですか、キロバイトですか?それで、1M、16M、13M、8Mですか?

私のボックスはたった4GのRAMで、通常の日には数百メガのメモリしかありませんでした。私はこれらの提案に従い、次のことを行う必要があります。

15Gに混乱していますが、これはメモリの問題ではなく、ディスクスペースの問題ですか?もしそうなら、推奨事項はあまり良くありませんよね?

ボックスのメモリを増やす必要がありますか?

詳細:-私のデータベースサイズは34Gigで、すべてのinnodbを使用しています。71個のテーブルがあり、そのうち4つは巨大で、残りは小さいです。大きなものをSOLRに移動し、そこからすべてのクエリを実行することを考えていましたが、基本的なチューニングで何ができるかを確認したいと思いました。

ありがとうジョエル

0 投票する
1 に答える
697 参照

.net - どのNHibernate/SQLの「存在する」クエリがより効率的ですか(そしてどのように知るか)?

以下のスニペットに対してNHibernateが生成するSQLクエリのプロファイリングを行っています。コード#1の方が効率的だと思いますが、生成されたSQLには疑問があります。

1)bool any = Query.Where(user => user.Id == 1).Any();生成:

2)bool any = Query.Where(user => user.Id == 1).Count() > 1;生成:

どちらがより効率的ですか?将来、これをどのように判断しますか?Oracleを使用しています。

0 投票する
1 に答える
374 参照

sql - T-SQL、スケジュールされたジョブでの複数の更新

スケジュールされたジョブとして使用するクエリを開発しています。簡単に言うと、テーブルに対していくつかの特定の計算を行い、計算結果に従っていくつかの列 (STATE など) を更新します。

サンプル (現在の状態) は、次のように示すことができます。



上記で実証しようとしたのは、クエリの流れです。上に見られるように、私は単一のテーブルを複数回更新しています。ほとんどの場合、異なる条件に応じて異なる値を持つ単一の状態列を設定しています。

また、条件に応じて小さなグループでこのテーブルのデータを更新する必要があったため、(パフォーマンスが低いため) カーソルの代わりに while ループを使用する必要がありました。

すべてのクエリがトランザクションと try-catch ブロックにラップされていると仮定します。

最後に、私の質問は次のとおりです。これは夜間に実行されるスケジュールされたジョブになるため、パフォーマンスは私にとって最優先事項ではありません。ただし、もう少しクリーンで効率的な (パフォーマンス面での) クエリを使用して同じ操作を行う方法を理解できませんでした。アドバイスが必要です。{some condition} 領域は、EXISTS 機能を持つサブクエリを保持することに注意してください。したがって、元のコードはこれよりもはるかに乱雑に見えます。前もって感謝します。――オザン

0 投票する
1 に答える
8517 参照

database - 複数のスキーマと巨大なテーブル

携帯電話にインストールしたアプリを保存するテーブル、監査の詳細、通知情報など、すべてのユーザーの情報を含むモバイル デバイス マネージャー システムを検討してください。対応するテーブルを使用して、ユーザーごとに個別のスキーマを作成するのが賢明ですか。 ? 1 人のユーザーの場合、テーブルの数は多く、それぞれ約 30 個のテーブルになります。このすべての情報がこれらのテーブルに配置される別のスキーマを持つ方がよいでしょうか (巨大なテーブルを作成しますか?)、それともユーザーごとにスキーマを持つ方がよいでしょうか?

前もって感謝します

0 投票する
3 に答える
105 参照

sql - これら 2 つのクエリのパフォーマンスに違いはありますか?

1)

2)

これらのクエリの結果が同じであることはわかっています。性能差はありますか?もしそうなら、その理由を説明してください。

0 投票する
3 に答える
1199 参照

python - ファイルシステム追跡のための最もパフォーマンスの高い無料データベース

私は、Python用のpyinotifyモジュール(実際には、ジョブを実行する背後にあるLinuxカーネル)を使用してLinuxファイルシステム(任意のタイプである可能性があります)を追跡しています。多くのディレクトリ/フォルダ/ファイル(ユーザーが望む限り)が私のアプリケーションで追跡されています。今度は、各ファイルのmd5sumを追跡して、データベースに保存したいと思います(すべての移動、名前変更、新しいファイルなどを含む) 。

データベースは、各ファイルのすべてのmd5sumを格納するための最良のオプションであると思います...しかし、そのための最良のデータベースは何でしょうか?確かに非常にパフォーマンスの高いものです。アプリケーションはGPLになるので、無料のものを探しています。