データベース管理者

データベースのスキルを向上させ、コミュニティの他の人から学びたいデータベースの専門家向けのQ&A

1
クラスター化インデックススキャンの実行回数が非常に多いのはなぜですか?
同じクエリプランを生成する2つの類似したクエリがありますが、1つのクエリプランがクラスタ化インデックススキャンを1316回実行し、もう1つのクエリプランが1回実行することを除きます。 2つのクエリの唯一の違いは、異なる日付基準です。長時間実行されるクエリは、実際には日付基準を絞り込み、引き戻すデータを減らします。 両方のクエリに役立ついくつかのインデックスを特定しましたが、クラスター化インデックススキャン演算子が1回実行するクエリと実質的に同じクエリで1316回実行する理由を理解したいだけです。 スキャンされているPKの統計を確認しましたが、比較的最新です。 元のクエリ: select distinct FIR_Incident.IncidentID from FIR_Incident left join ( select incident_id as exported_incident_id from postnfirssummary ) exported_incidents on exported_incidents.exported_incident_id = fir_incident.incidentid where FI_IncidentDate between '2011-06-01 00:00:00.000' and '2011-07-01 00:00:00.000' and exported_incidents.exported_incident_id is not null この計画を生成します。 日付範囲の基準を絞り込んだ後: select distinct FIR_Incident.IncidentID from FIR_Incident left join ( select incident_id …

5
行を返さないクエリにORDER BYを含めると、パフォーマンスに大きく影響します
単純な3つのテーブルの結合を考えると、行が返されない場合でもORDER BYを含めると、クエリのパフォーマンスが大幅に変わります。実際の問題シナリオでは、ゼロ行を返すのに30秒かかりますが、ORDER BYが含まれていない場合は即座に発生します。どうして? SELECT * FROM tinytable t /* one narrow row */ JOIN smalltable s on t.id=s.tinyId /* one narrow row */ JOIN bigtable b on b.smallGuidId=s.GuidId /* a million narrow rows */ WHERE t.foreignId=3 /* doesn't match */ ORDER BY b.CreatedUtc /* try with and without this ORDER …

2
最適化:プロシージャの最上部への変数宣言の移動
いくつかのストアドプロシージャの最適化に取り組んでいる間、DBAに座って、高いブロッキングおよび/または高い読み取り/書き込みアクティビティでいくつかのストアドプロシージャを実行しました。 DBAが言及したことの1つTABLEは、再コンパイルを回避するために、ストアドプロシージャの最上部ですべての変数(特に変数)を宣言する必要があることです。 これは私がこれを聞いた最初のものであり、私たちが持っているすべての異なるストアドプロシージャを再検討する前に、いくつかの確認を探していました。彼はそれを「コードの遅い表示」と呼び、再コンパイルはブロッキングを説明するスキーマをロックしていました。 すべての変数宣言をストアドプロシージャの先頭に移動すると、再コンパイルが減りますか?

2
「tmpテーブルへのコピー」が非常に遅い
これはクエリの私の例です: SELECT nickname, CASE class_id WHEN 1 THEN 'Druid' WHEN 2 THEN 'Necromancer' WHEN 3 THEN 'Mage' WHEN 4 THEN 'Priest' WHEN 5 THEN 'Warrior' WHEN 6 THEN 'Stalker' WHEN 7 THEN 'Paladin' WHEN 8 THEN 'Psionic' END class_name, ROUND(AVG(level),2) level, ROUND(AVG(tabard_id),2) tabard, CASE rank_id WHEN 1 THEN 'Leader' WHEN …

5
SQLサーバーに対する攻撃の可能性
SQL Serverログを確認すると、次のようなエントリがいくつか表示されます。 Date: 08-11-2011 11:40:42 Source: Logon Message: Login failed for user 'sa'. Reason: Password did not match for the login provided. [CLIENT: 56.60.156.50] Date: 08-11-2011 11:40:42 Source: Logon Message: Error: 18456. Severity: 14. State: 8. Date: 08-11-2011 11:40:41 Source: Logon Message: Login failed for user 'sa'. Reason: Password did …

2
「SELECT POWER(10.0、38.0);」が算術オーバーフローエラーをスローするのはなぜですか?
私は更新しています私のIDENTITYオーバーフローチェックスクリプトをのアカウントにDECIMALしてNUMERIC IDENTITY列。 チェックの一環として、すべてのIDENTITY列のデータ型の範囲のサイズを計算します。それを使用して、その範囲の何パーセントが使い果たされたかを計算します。以下のためにDECIMAL及びNUMERIC その範囲のサイズである2 * 10^p - 2場合pの精度です。 私はテストを持つテーブルの束を作成DECIMALし、NUMERIC IDENTITY列を、次のようにその範囲を計算しようとしました。 SELECT POWER(10.0, precision) FROM sys.columns WHERE is_identity = 1 AND type_is_decimal_or_numeric ; これにより、次のエラーがスローされました。 Msg 8115, Level 16, State 6, Line 1 Arithmetic overflow error converting float to data type numeric. IDENTITYタイプの列DECIMAL(38, 0)(つまり、最大精度)に絞り込んだのでPOWER()、その値で直接計算を試みました。 以下のすべてのクエリ SELECT POWER(10.0, 38.0); SELECT CONVERT(FLOAT, (POWER(10.0, 38.0))); …


1
ビューでOPENQUERYを使用することのパフォーマンスへの影響
stackoverflowでこの質問を参照してください。 EasySoft ODBCドライバーを使用して、SQL Server 2008 R2 ExpressインスタンスをInterbaseにリンクしていますが、リモートサーバーからメタデータを取得するのに多少苦労しています。ネット上で見ると、主な提案はすべて、4つの部分のリンクサーバー構文の代わりにOPENQUERYを使用することに言及しています。 EG現在の(問題のある)アプローチは... CREATE VIEW [LIVE].[vwPRDETS] AS SELECT * FROM [LBLIVE]...[PRDETS] WITH (NOLOCK) しかし、いくつかのテーブルでは、ビューを呼び出すときにエラーが発生します... メッセージ7353、レベル16、状態1、行1リンクサーバー "LBLIVE"のOLE DBプロバイダー "MSDASQL"は、一貫性のないメタデータを提供しました。コンパイル時に見つからなかった追加の列が実行中に提供されました。 また、次のようになったために作成できないビューもあります... メッセージ7315、レベル16、状態1、行1リンクサーバー "LBLIVE"のOLE DBプロバイダー "MSDASQL"には、名前 "" SYSDBA "。" AUDIT_LBABKP ""に一致する複数のテーブルが含まれています。 ただし、言及されている表は1つだけです。 ネットを検索する別の方法は、もっと似ているようです... SELECT * FROM OPENQUERY(<linked sevrer>, 'SELECT <column list> FROM MyTable') したがって、私の質問は、ビュー定義でOPENQUERYを使用すると、SQL ServerはInterbaseに送信される結果のSQLを最適化できますか?それとも、2つのアプローチの間にそれほど大きな違いはありませんか? それはクロスオーバーの主題であり、dbaのPOVが大好きです。

5
最初からインデックスを作成するか、パフォーマンスの問題が発生したとき?
私の質問は、インデックスの使用に関するものです。 最初から、またはパフォーマンスの問題が発生したときに、インデックス作成を開始する必要がありますか? クエリの実行中に一時インデックスを作成することもできます。そのような技術の長所と短所は何ですか?

3
SQL Server 2008 R2の長時間実行クエリまたはデッドロックに関する通知
デッドロック時に通知を送信する方法があるかどうか知りたいですか?その場合、どのクエリが必要になるでしょう。SQL Serverはデッドロックを処理することを理解しています。関連するクエリに関する情報が欲しいだけです。 長時間実行されるクエリを特定するために、次のことがわかりました。 SELECT creation_time ,last_execution_time ,total_physical_reads ,total_logical_reads ,total_logical_writes , execution_count , total_worker_time , total_elapsed_time , total_elapsed_time / execution_count avg_elapsed_time ,SUBSTRING(st.text, (qs.statement_start_offset/2) + 1, ((CASE statement_end_offset WHEN -1 THEN DATALENGTH(st.text) ELSE qs.statement_end_offset END - qs.statement_start_offset)/2) + 1) AS statement_text FROM sys.dm_exec_query_stats AS qs CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st where total_elapsed_time >= …
15 query  deadlock 

3
ベストプラクティスのSQL Serverメンテナンスプランはどのようなものですか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 5年前に閉鎖されました。 私はアイントホーフェンのフォンティス大学の学生です。現在、SQL Serverツールの開発を支援するために一連のインタビューを実施しています。この分野の専門家からフィードバックをもらいたいと思います。 私の質問の1つは次のとおりです。 ベストプラクティスのSQL Serverメンテナンスプランはどのようなものですか?これにはSQL Serverメンテナンスプランを使用しますか、それともカスタムスクリプトを使用しますか?


1
mysql.userから匿名ユーザーを削除できません
mysql.usersデータベースから匿名ユーザーを削除しようとしています。しかし、私は奇妙な行動を取っています。コマンドを入力すると: DROP User ''@'WOPR'; 一般的なエラーメッセージが表示されていました。そこで、マシンをリブートして、もう一度試しました。今回は応答を得た Query OK, 0 rows affected. しかし、私が入れたとき SELECT User, Host, Password FROM mysql.user WHERE User=''; 戻り値は次のとおりです。 +------+------+----------+ | User | Host | Password | +------+------+----------+ | | WOPR | | +------+------+----------+ (WOPRは私のホスト名です) コマンドを実行します DROP User ''@'WOPR'; 同じ結果が得られます。 カーネルバージョン2.6.33のArch LinuxでMySQL 5.5の新規インストールを実行しています。 誰がこの動作を引き起こす可能性があるか知っていますか?
15 mysql 



弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.