問題タブ [sql-tuning]
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.
performance - SPは強力なサーバーでは遅いが、ローカルでは速い(両方ともSSMSから)
大きくて遅いストアド プロシージャを継承しましたが、悪夢に見舞われています。
デスクトップにSQL Server 2008をインストールし、本番データベースのコピーを使用しています。私はSSMSからすべてを実行しており、ストレートSQLとSPを試しました。Sp と SQL の時間はほぼ同じなので、過度に心配する必要はありません。気になるのは、ローカルとサーバーの時間です。
sproc を「ローカルで」実行すると、完了するまでに約 6 秒かかります。
サーバーに対して sproc を実行すると、完了するまでに約 25 分かかります!!!
[合計インサート = 45,500]
できる限り SP を調整し、パラメーター スニッフィングを回避しようとしましたが、ほぼ同等のマシンでこれが非常に遅くなる理由がわかりません (SQL Server のバージョンがわずかに異なることはわかっていますが、なぜそうなるのかわかりません)。そんなに違いますか?)
SP が素晴らしいものではないことはわかっていますが、ローカルで 6 秒で実行される場合、完全なパンツではありません。サーバー上で 60 秒かかった場合でも問題ありません。この SP には 15 回の呼び出しがあります...したがって、15*0:06 は受け入れられます...15*25:00 は受け入れられません!
これらの SP が実行されていないときのサーバーの負荷はかなり低く、進行中のときは約 50% の CPU (1 コア 100%?) です。ローカルで CPU が 25% を超えることはありません。
SP全体を投稿するためのApols ...しかし、物事を改善するために設定できるオプションがある場合に、それが何をしているのかを示す方法が他にわかりません:(
sql - SQL Server 監査ログアウトにより、膨大な数の読み取りが発生する
SQL Server Profiler を使用して、どのプロセスが SQL プロセスを消費しているかを調べています。イベント クラスAudit Logout
が膨大な数の読み取りを引き起こし、CPU プロセスを消費していることがわかりました。
それは正常ですか?または、SQL Server の構成に何か問題がありますか?
mysql - GROUP BY、AVGなどを使用した大きなテーブルでのmysqlクエリが遅い
大きなテーブル (200 万行以上) に対するクエリがあり、完了するまでに約 10 秒かかります。それを最適化する方法はありますか?クエリは次のとおりです。
テーブル「ad_counts」:
date0 のインデックスですが、date0 は一意ではありません。
何かご意見は?
編集: 説明:
performance - Oracle11g高IO待機
Oracle Version: 11.1.0.7.0
OracleRACインスタンスの1つでIO待機が高くなっています
1つのSQLの実行による経過時間は長く、実行ごとに1452.57秒です。これはある日突然起こり始めました。以前は、20k(:v4パラメーター)レコードを照会するのに最大3〜4分かかりました
subscribeinfoレコード:5900万(非並列)
チャージレートレコード:2k-3k
SQLは以下のとおりです
o.msisdn、o.spid、o.serviceid、o.ChargeReferenceID、o.channelID、o.nextchargetime、o.failtimestamp、o.lastmonfeeday、o.networkId、o.retryEndDateTime、o.trialType、o.subFlag、oを選択します.faultCode from subscribeinfo o、chargerate r where(o.monthbillid =:v1)and(((o.state =: "SYS_B_00")and(o.nextchargetime <:v2)and((o.IsAutoExtend <>: "SYS_B_01 ")または((o.IsAutoExtend =:" SYS_B_02 ")and(o.extendflag <>:" SYS_B_03 "))))または(o.subFlag =:" SYS_B_04 "and o.state =:" SYS_B_05 "and o .retryenddatetime>:v2))and(o.ChargeClassForSub = r.chargeclassidx)and((r.chargemode =: "SYS_B_06" and r.activetype =: "SYS_B_07" and o.nextchargetime!=: "SYS_B_08")または( r.chargemode =:"SYS_B_09"およびr.activetype<>:"SYS_B_10")または(r.chargemode> =: "SYS_B_11" and r.chargemode <=: "SYS_B_12" and r.basecharge> =: "SYS_B_13")または(r.chargemode =: "SYS_B_14")または(r .chargemode =: "SYS_B_15")または(r.chargemode =: "SYS_B_16"))および(o.failtimestamp <=:v3)および(rownum <=:v4)
AWRレポートによるとトップ5の時限フォアグラウンドイベント
ダイレクトパス読み取り[平均待機時間:22秒、%DB時間:50.75%] DBファイルシーケンシャル読み取り[平均待機時間:15秒、%DB時間:38.00]
制限があるため、完全なAWRレポートを投稿することはできません。だから私が投稿する詳細を聞いてください
以下の説明プランをご覧ください。
ID Exec Ord Operation Go To More Peek Bind Capt Bind Cost2 Estim Card LAST Starts LAST Output Rows LAST Over / Under Estimate1 PStart PStop Work Area 0 7 SELECT STATEMENT
23335 1 2577 1 6 COUNT STOPKEY [+] [+]
[+] 23335 1 257725。ハッシュ結合[+][+]
[+] 23335 20001 125778xオーバー[+]31..テーブルアクセスフルチャージ[+][+]68 3035 1 3036 1x 44..パーティションリストシングル[+]23266.. 25223 1 2577 10x over KEY KEY 53...ローカルインデックスによるテーブルアクセスROWIDSUBSCRIBEINFO[+] [+] [+]
[+] 23266 25223 1 2577 10x over KEY KEY 62....インデックス範囲スキャンIDX_FAILTIMESTAMP_NEW[+][+] [+] [+] 243512100765キーキー
IOSTAT
Linux 2.6.16.46-0.12-smp(mdspdb01)11/16/12
avg-cpu:%user%nice%system%iowait%steal%idle
デバイス:tps Blk_read / s Blk_wrtn / s Blk_read Blk_wrtn
sda 5.71 39.53 121.79 665679995 2051190222
sdb 85.75 178.15 171.12 3000316741 2881953582
sdc 111.05 161.69 43.96 2723201251 740429949
monthbillid、nextchargetime、failtimestampの各フィールドのインデックスを作成しました...これにより、カーディナリティが1/6に大幅に向上しましたが、コストが4〜5倍に増加しました。ただし、Oracleはデフォルトで新しいインデックスを取得します
subscribeinfo(monthbillid、nextchargetime、failtimestamp)ローカルテーブルスペースIMUSE_INDEXにインデックスIDX_MONTHBILLQUERYを作成します。
dbms_stats.gather_index_stats('IMUSE01'、'IDX_MONTHBILLQUERY');
AWRレポートにはハード解析=0があります。また、cursor_sharing=FORCEを変更しました
現在、IOは制御下にあります。まだ感じていますが、これは根本的な原因ではありません。また、インスタンスをこのクエリ専用にしました。これは1時間に10回以上発生し、2万件のレコードを取得するのに約100秒かかります。
オプティマイザーモードをfirst_rowsとして使用するか、ヒントfirst_rows(20000)を使用するかを選択するのが適切かどうか、誰かが提案できますか。
現在、統計ジョブを無効にしていますが、一部のテーブルまたは一部のインデックスに対してのみ同じことを有効にできますか?これは可能ですか?
sql - SQL Server 2012 でのエンティティ属性値モデル (「動的属性」) のクエリの支援
特定のオブジェクト (製品など) の 1 つのテーブルとその動的属性の 1 つのテーブルを含むモデルからクエリを実行するには、支援が必要です。
、などの属性を持つと、、などのChocolate
属性を持つを格納できるとしましょう。 Price
Color
Weight
Car
Engine
Gears
Color
私の例では、次の列を持つ Products というテーブルがあります。
dynamicAttributes
次の列で呼び出される別のテーブルがあります。
クライアントから属性コードのリストとその値のリストを取得します。
各属性の値の型 (boolean、string、int) を取得できます。
アプリからこのモデルをクエリするための最良のオプションは何ですか?
動的 SQL のみ ? Pivot キーワードを使用していますか?
sql-server-2005 - パフォーマンスを向上させるために、selectステートメントで可能な結合の最大数
フェッチ時間を短縮するために(パフォーマンスを向上させるために)巨大なデータを含むテーブルからのselectステートメントで使用できる結合の最大数。つまり、50個の内部結合または左結合を持つselectステートメントがある場合、分割する方がよいかどうかです。 selectステートメントをより少ない結合数(4または5結合)で別のselectステートメントに変換し、データ・セットに収集します。
sql - SQL-追加のGROUPBYを回避します(およびクエリのパフォーマンスを向上させます)
私はこの問題の解決に固執しており、新しい新鮮なアイデアを聞くのはいいことです:)
私はこのような何十億ものレコードのテーブルを持っています
以前はこのようなデータを取得していました
table_spは、10kのレコードを持つ小さなテーブルです(ID(int)(PK)、NAME(varchar)(IX))
@pr_idと@sp_namesは、1つの列を持つテーブル変数です
クエリは非常に高速でした(約2〜3秒)。PR_IDが異なり、TAB_IX、TAB_ID、SP_IDが同じレコードを区別したくありません。
たとえば、次のようなレコード
1つと見なす必要があります。
唯一の方法は、追加のGROUPBYを実行しているようです
このような
この追加のGROUPBY操作を追加すると非常に苦痛に見えるため、問題はパフォーマンスです。
クエリを改善するためのアイデアはありますか?
前もって感謝します :)
sql - クエリのチューニング - アドバイス
添付のクエリについてアドバイスが必要です。クエリは 1 時間以上実行され、Explain Plan に従って完全なテーブル スキャンが行われます。私はクエリのチューニングにかなり慣れていないので、アドバイスをいただければ幸いです。まず、使用するすべての列にインデックスが作成されているにもかかわらず、完全なテーブル スキャンが行われるのはなぜですか。次に、実行時間を短縮できる可能性はありますか。アクセスされるすべてのテーブルは巨大で、何百万ものレコードが含まれています。それでも、いくつかのオプションを検討したいと思います。あなたの助けに感謝します。
クエリ:
クエリ プラン:
各テーブルに 100 を超える列が含まれていることを考慮すると、テーブル定義全体をアップロードする際に制限があります。ただし、where 句でアクセスされる列については、以下の詳細を参照してください。お役に立てれば。
sql - Oracle の cursor_sharing パラメータ
Oracleでcursor_sharingパラメータを "FORCE" に設定する際のトレードオフを知りたいです。これは SQL ステートメントをソフト解析しようとするため、確実にパフォーマンスを改善する必要があります。ただ、デフォルト値は「EXACT」なので、FORCEやSIMILARに設定しても危険がないか知りたいです。