問題タブ [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.
php - ストアドプロシージャとプリペアドステートメントのMySQLパフォーマンスの比較
これがMySQLのプリペアドステートメントです
および同等のストアドプロシージャ
クエリを実行した後、両方とも同じ結果を出力します。
実行時間を詳しく調べますが、どちらも同じです。いつ、どこで、あるものが別のものよりも優れていて、速いですか?
.net - 推奨されるSQLServer/T-SQLブック
SQL Server 2008とT-SQLに関する本を探しています。たとえば、中間(ストアドプロシージャ、インデックス作成、最適化、パフォーマンスに焦点を当てる)で、単純な作成/挿入/選択にあまり力を入れていません;)
また、主にパフォーマンスを向上させるという点で、いくつかの.NETの機能も優れています。
mongodb - MongoDB Java ドライバーの MongoOptions を本番環境で使用するために構成するにはどうすればよいですか?
MongoDB Java ドライバー用に MongoOptions を構成するためのベスト プラクティスを探して Web を検索してきましたが、API 以外にはあまり思いつきませんでした。この検索は、「com.mongodb.DBPortPool$SemaphoresOut: Out of semaphores to get db connection」エラーに遭遇した後に開始され、接続/乗数を増やすことでその問題を解決できました。これらのオプションを本番用に構成するためのリンクまたはベスト プラクティスを探しています。
2.4 ドライバーのオプションは次のとおりです。 http://api.mongodb.org/java/2.4/com/mongodb/MongoOptions.html
- autoConnectRetry
- connectionsPerHost
- connectTimeout
- 最大待機時間
- ソケットタイムアウト
- スレッドAllowedToBlockForConnectionMultiplier
新しいドライバーにはより多くのオプションがあり、それらについても聞きたいです。
mysql - データベース速度の最適化 (複数のクエリ)
映画用の Web アプリケーションを開発する必要があります。今のところ、私のデータベースには、フィギュアと映画の関係を表すテーブルと、俳優 (これもフィギュア) と映画の関係を表すテーブルがあります。最後のものには、キャラクターに関する情報も含まれています。
私の質問は正規化に関するものではありません。テーブルごとに2つのクエリを実行するか、いくつかのタプルの文字にNULL値を持つ単一のクエリにマージして単一のクエリを実行する方が速度の点で効率的かどうかを知りたいですクエリ?
編集:
今のところ 2 つのクエリ (フィギュア側、彼の演技と経歴を取得するため):
sql - SQLクエリ-パフォーマンスを改善する必要がある
データをプルしてサービスにキャッシュする動的SQLクエリを作成するデータロードシナリオがあります。すべての製品データを含む1つのテーブルがあります:ProductHistory(47列、200,000レコード+そして今後も増え続ける)
必要なもの: 最大ID、最大バージョン、最大変更IDを使用して最新の製品を入手してください。
最初の試み:
これには2.51分以上かかりました。
その他の失敗した試み:
基本的に、日付を注文するときと同じ原則を使用し、関連性の高い順に番号を連結します。
しかし、これは3.10分かかります!!! :(
したがって、基本的に、最初の試行クエリを万が一改善する方法が必要です。また、このような量のデータについても疑問に思っていましたが、これは私が期待する最高の検索速度ですか?
sp_helpindex ProductHistoryを実行し、以下のようにインデックスを見つけました。
PK_ProductHistoryNew-PRIMARY- Id、バージョンにあるクラスター化された一意の主キー
最初のクエリをSPでラップしましたが、それでも変更はありません。
では、他にどのような方法でこの操作のパフォーマンスを向上させることができるのでしょうか。
ありがとう、Mani ps:時間を確認するためにSQLManagementStuidoでこれらのクエリを実行しています。
mysql - DBパフォーマンスのボトルネックにぶつかりましたが、今はどこですか?
DBが数百万レコードに成長したため、時間がかかりすぎる(300ミリ秒)クエリがいくつかあります。幸いなことに、クエリはこのデータの大部分を調べる必要はありません。最新の100,000レコードで十分なので、最新の100,000レコードを含む別のテーブルを維持し、これに対してクエリを実行する予定です。誰かがこれを行うためのより良い方法について何か提案があれば、それは素晴らしいことです。私の本当の質問は、クエリを履歴データに対して実行する必要がある場合のオプションは何ですか、次のステップは何ですか?私が考えたこと:
- ハードウェアをアップグレードする
- インメモリデータベースを使用する
- 独自のデータ構造でオブジェクトを手動でキャッシュします
これらは正しいですか、他にオプションはありますか?一部のDBプロバイダーは、これらの問題に対処するために他のプロバイダーよりも多くの機能を備えていますか?たとえば、特定のテーブル/インデックスを完全にメモリ内に指定するなどです。
申し訳ありませんが、私はこれについて言及する必要があります、私はmysqlを使用しています。
上記で索引付けについて言及するのを忘れました。正直なところ、これまでのところ、インデックス作成は私の唯一の改善の源です。ボトルネックを特定するために、インデックスが使用されているかどうかを示すクエリにmaatkitを使用しています。
私は今、質問の意図から離れていることを理解しているので、別の質問を作成する必要があるかもしれません。私の問題は、EXPLAIN
jprofilerが報告している300msではなく10msかかるということです。誰か提案があれば、本当にありがたいです。クエリは次のとおりです。
からの出力EXPLAIN
は次のとおりです。
java - Hibernate NullableType のパフォーマンスの問題
クエリの 1 つのパフォーマンスに問題があり、jprofiler でプロファイリングした後、クエリ時間の 60% が nullSafeSet と nullSafeGet の呼び出しを含む joda の休止状態ライブラリにあることがわかりました。なぜそこに多くの時間を費やすのか、一生わからない。
取得中のドメイン オブジェクトには 2 つの DateTime 属性が含まれており、どちらも null の可能性があります。私が実行しているクエリ (1 ミリ秒未満) は、日付時刻の 1 つで等価性チェックを行い、それが null であり、他の日付では比較より小さいことを確認します。Jprofiler は nullSafeSet を 1 回呼び出し、nullSafeGet を 2 回呼び出します。nullSafeGet の実行には合計 19.7 ミリ秒かかり、nullSafeSet には 25.9 ミリ秒かかります。nullSafeSet が呼び出してほとんどの時間を費やすメソッドは でjava.sql.PreparedStatement.setTimestamp
あり、nullSafeGet 呼び出しの場合、時間は のコンストラクターで費やされorg.joda.time.convert.ConverterManager
ます。
この状況を改善する方法について誰か提案がありますか?!
下のスクリーンショットが役に立つかどうか、あるいは判読できるかどうかさえわかりません。これは、時間が費やされた場所と実行されているクエリを示す jprofiler からの出力です。
mysql - MySQL のカーソル - 良いか悪いか
カーソルの使用について人々が悪いと言っているのをいつも聞いていましたが、これは特に Microsoft SQL Server で非常に遅いためです。
これは、MySQL の Cursors にも当てはまりますか? MySQL のカーソルもパフォーマンスを低下させますか? MySQL でのカーソルの使用法についてアドバイスをいただけますか?
mysql - Mysql からデータをフェッチする方法を選択する際の複雑さ
PHP、Mysql、Apache に基づくプロジェクトに取り組んでいます。
FACEBOOKで利用可能な通知と同じような通知というモジュールがあります。これには3つの方法があります
これらの更新について通知する必要があるユーザーの数に、すべての更新をテーブルに挿入します。つまり、カテゴリ B にいくつかの更新があり、このカテゴリ B に 100 人のユーザーが含まれている場合、それぞれのユーザーに 100 行を挿入しますたとえば、通知テーブル。
2番目の方法
私ができることは、テーブルに特定のカテゴリのエントリを挿入し、これらの各ケアゴリー ID に対して大量の JOIN クエリをファイルして、複数のテーブルからすべてのレコードを取得してレコードを取得することです。
サードウェイ
ユーザーへの通知に使用できるように、すべての更新でトリガーを使用します。
この 3 つの方法はすべて、ある時点で問題があると思います。
今、誰かがより良いアイデアを提案できますか、またはこれらのどれがより良いオプションですか?
大量のエントリがあるため、サイトのパフォーマンスが心配です
ありがとう
sql - 単一のテーブルを使用して行データを列に変換するSQL
DBテーブルの行の1つを列に変換し、カーソルでPIVOT関数を使用しようとしています。これは、SQLです。
ここで、AllCounterIdsは、これを使用して作成したビューです。
問題は、テーブルに27993600行があり、SQLを実行すると、出力が得られるまでに4分と15秒かかり、パフォーマンス要件に従って、問題が発生することです。とにかく、希望する結果を達成できるが、パフォーマンスが向上する場所はありますか?
また、クラスターインデックスもテーブルに定義されていることをお知らせします...