データベース管理者

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

3
可能な限り一致するものをクエリして順序付け
私はこれらの行に沿ってクエリを書こうとしています: select * from tbl where col1 = 1 and col2 = 2 and col3 = 3 order by ... ; 最初に3つのWHERE条件すべてが一致するすべての結果(3/3)、次に任意の2つの条件が一致するすべての結果(2/3)、最後に任意の1つの条件が一致する結果(1/3)が必要です。 これら3つの結果セットのそれぞれは、によって順序付けされる必要があります(col4, col5, col6)。 単一のクエリでそれを実行できますか? 例えば: サンプルhttp://img708.imageshack.us/img708/1646/sampletableresult1.jpg テストデータを作成するスクリプト: IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MyTable]') AND type in (N'U')) DROP TABLE [dbo].[MyTable] GO CREATE TABLE dbo.MyTable …

5
SQL 2005とSQL 2008R2でクエリの実行が異なる
私のオフィスには、見苦しいクエリがありますが、運用環境と開発環境(それぞれ20秒と4秒)でかなりうまく実行されます。ただし、テスト環境では4時間以上かかります。SQL2005(+最新のパッチ)は、本番環境および開発環境で実行されています。SQL2008R2はテストで実行されています。 クエリプランを確認したところ、SQL2008R2はリンクサーバーから返された行を格納するために、テーブルスプール(レイジースプール)を介してTempDBを使用していることがわかります。次のステップは、クエリの96.3%を消費しているネストされたループ(左反準結合)を示しています。2つのオペレーター間の境界線は5,398MBです。 SQL 2005のクエリプランでは、tempdbの使用とLeft Anti Semi Joinの使用は示されていません。 以下はサニタイズされたコードであり、実行計画は2005年の計画を上に、2008R2は下を計画しています。 劇的なスローダウンと変化の原因は何ですか?別の実行プランが表示されることを期待していたので、気になりません。クエリ時間の劇的なスローダウンが私を悩ませています。 2008R2バージョンはtempdbを使用しているため、基盤となるハードウェアを確認する必要がありますか?その使用を最適化する方法を確認する必要がありますか? クエリを記述するより良い方法はありますか? 助けてくれてありがとう。 INSERT INTO Table1_GroupLock (iGroupID, dLockedDate) SELECT Table1.iGroupID, GETDATE() FROM Table1 WHERE NOT EXISTS ( SELECT 1 FROM LinkedServer.Database.Table2 Alias2 WHERE ( Alias2.FirstName + Alias2.LastName = dbo.fnRemoveNonLetter(Table1.FullName) AND NOT dbo.fnRemoveNonLetter(Table1.FullName) IS NULL AND NOT Alias2.FirstName IS NULL AND NOT …

3
SQL Server-非ブロッキングselectステートメントの分離レベルは何ですか?
SQL Server 2008 R2のテーブルで一部の削除、更新、および挿入を実行する長時間実行トランザクション(たとえば、T1と呼ばれます)があります。同時に、別のプロセスが定期的にこのテーブルの選択ステートメントを実行します。 デフォルトの分離設定(READ COMMITTEDだと思いますか?)では、T1は、トランザクションがコミットまたはロールバックされるまで、selectステートメントの実行をブロックします。 私が見たいのは、トランザクションが進行中でも、selectステートメントが一貫したデータで機能することです。スナップショット分離が役立つと思いますが、正しい方向に進んでいるかどうかはわかりません。これは、このアプリケーションに最適な分離レベルでしょうか? 次に、selectステートメントを呼び出しているプロセスを制御することはできませんが、T1を呼び出す.NETアプリケーションを制御します。selectステートメントとT1の両方で分離レベルの変更が必要ですか、それともT1だけを別の分離レベルとしてマークするだけで十分でしょうか?

1
中央値、モード、パーセンタイル、およびOLAP
私は頭をOLAPに巻き込もうとしている初心者ですが、いくつか質問があります。 質問1: OLAPキューブは中央値、モード、パーセンタイルを格納できますか? 質問2:ユーザー作成のMDXクエリは、行レベルのデータの概要を返すことができますか?(例:%トランザクション> $ 100)。または、キューブデザイナーはこれをキューブに追加する必要がありますか? 質問3:行レベルのデータにアクセスするためのメカニズムを提供するOLAP製品はありますか?どっち? 当社のIT部門は、特定のMS Analsis Services ROLAPキューブでどのような問題が発生しているかについてのフィードバックを求めています。その背後にあるリレーショナルデータベースへのアクセス権がないため、現在キューブ内のメジャーとして使用できない計算を実行する必要があります。 私にこの権利があるかどうか見てみましょう。 キューブは、カウント、平均、比率、標準偏差の統計を提供できます。 キューブデザイナが提供するメジャーで特定の統計が提供されていない場合、MDXクエリを記述してそれを取得できますか?または、行レベルのデータから事前計算するためにキューブを変更する必要がありますか? キューブは、中央値、モード、パーセンタイルなどの統計を提供できません。これらの統計は適切に集計されないためです。 Leland WilkinsonのThe Grammar of Graphicsと、Data MiningとOLAPに関する彼の章を読んでいると彼は言う これらの[キューブ操作]は、カウント、平均、比率、標準偏差などの統計でうまく機能します。サブクラスの単純な集計は、和、二乗和、および線形関数で結合されて基本的な要約統計量を生成する他の項を操作することによって計算できます。 これらの統計の集計はそれらの集計の統計ではないため、中央値、モード、パーセンタイルなどの統計では正しく機能しません。たとえば、中央値の中央値は、集計の中央値ではありません。 彼は続けて追加します: しかし、より洗練されたROLAPモデルが最近登場しました。いくつかのテクノロジーを通じて、統計アルゴリズムがリレーショナルモデルを通じて生データにリアルタイムでアクセスできるようにすることができます。このアプローチは、データキューブなどの構造によって提供される固定集計よりも有望です。 このアーキテクチャの最もエレガントな形式では、アプリケーションはリモート接続を要求して、データ処理方法に関する情報を提供し、返された情報に応じて適切なアクションを実行できます。この形式では、コンポーネントアーキテクチャは、分散コンピューティングの真の期待、つまりサイト、オペレーティングシステム、または言語に依存しない設計と実行を実現できます。 それは2005年頃に書かれました。行レベルのデータアクセスを可能にするためにこの方法論を採用している製品を知っている人はいますか?
9 ssas  statistics  olap 

3
SQL Serverのメモリを解放する方法
ローカルコンピューターにSQL Serverサンドボックスがインストールされています。SQL Serverインスタンスが使用できるメモリを1000 MBに設定しました。集中的な操作を実行すると、メモリ使用量が最大1000 MB増加します。操作が終了しても、SQL Serverはまだメモリを保持しています。このメモリ予約を解放する方法は?

2
アドホックで実行した場合とストアドプロシージャで実行した場合、コードは異なるプランを作成します
ストアドプロシージャ内で実行するときに不適切なプランを使用する削除ステートメントがありますが、アドホックで実行するときにはるかに優れたプランを選択しています。 クエリで使用されるテーブルのすべてのインデックスを再構築し、すべてのキャッシュを削除しました。オプティマイザは引き続き、ストアドプロシージャに対して誤ったプランを選択します。 オプティマイザがストアドプロシージャとアドホックSQLで異なる実行プランを使用している理由を知りたいのですが。 更新:私はそれが結局のところパラメータだったに違いない-私がハードコードされた変数でアドホックコードを実行したとき、私は正しい値(それは日付であり、1年前の値です)で「悪い」計画を得ることができます「良い」計画を生み出すようです)。次に、クエリヒントを使用して、プロシージャに "適切な"プランを強制しようとします。 解決策:OPTIMIZE FOR UNKNOWNヒントを使用して、目的の計画を取得することになりました。

5
並列処理のベストプラクティス
並列処理の設定に関する一般的なベストプラクティスは何ですか?SQL Serverはデフォルトで0使用可能なすべてのプロセッサを使用することを知っていますが、どのような場合にこのデフォルトの動作を変更しますか? OLTPワークロードの場合は並列処理をオフにする(maxdopをに設定する1)必要があることをどこかで読んだことを覚えています(この記事を探す必要があります)。なぜあなたがこれをするのか、私には完全には理解できません。 maxdopをいつSQL Server(0)まで維持しますか?いつ並列処理(1)をオフにしますか?maxdopを特定の数のプロセッサに明示的に指定するのはいつですか? 並列性の原因は何ですか?

7
スケジュールされたバックアップタスクは、常にジョブが成功したと言っているにもかかわらず、常にすべてのデータベースをバックアップするわけではありません
SQL 2008で、ストアドプロシージャを実行してすべてのデータベースをバックアップするジョブがあります。これは、SQLサーバーエージェントジョブを介して毎日実行されます。 それは毎日成功して終了しますが、いくつかのデータベースはいくつかのデータベースをバックアップした後にのみ成功して終了します。毎回異なる数のデータベースを使用できます。ほとんどの場合、すべてのデータベースが正常にバックアップされますが、場合によっては2つのバックアップが正常に実行され、場合によっては5などもバックアップされます。 ジョブ履歴、イベントビューアー、またはSQLサーバーログにエラーが表示されません。 フォルダは拡張可能なストレージボリューム上のフォルダへの「ジャンクション」ですが、ローカルディスクへのバックアップが行われています。 OSは、SQL Server 2008 Webエディション64ビットを実行しているWindows 2003 64ビットで、VMware ESXi 5ホスト上で実行されている仮想マシンです。 ストアドプロシージャ: ALTER PROCEDURE [dbo].[backup_all_databases] @path VARCHAR(255)='c:\backups\' AS DECLARE @name VARCHAR(50) -- database name DECLARE @fileName VARCHAR(256) -- filename for backup DECLARE @fileDate VARCHAR(20) -- used for file name DECLARE @dbIsReadOnly sql_variant -- is database read_only? DECLARE @dbIsOffline …

4
TempDBでのDDL競合
過去数か月間、TempDB DDL競合の問題が発生しているSQL Server 2005 Standard x64があります。サーバーは待機リソース2:1:103(待機タイプはPAGELATCH_EX)で競合が発生します。 この問題は、サーバーに適切な負荷がかかっているときに散発的に発生するようです。私は「破壊用の一時テーブル」のレートを監視しており、2:1:103でPAGELATCH_EXの問題が発生しているときに5,000以上にジャンプする可能性があります。私が読んだことから、このカウンターはほとんどの場合0であるはずですが、私たちのカウンターはほとんどの場合300〜1100のどこかにとどまっているようです。システム上のユーザーが非常に少ない場合にのみ、カウンターは0になります。 干し草のスタックで針を探す必要なしに、tempdbのDDL競合の原因を絞り込むにはどうすればよいですか?

1
アプリケーションが多すぎるセッションを使用するのはいつですか?
私は、OCIを使用してOracleと通信するクライアント/サーバーアプリケーションに取り組んでいます。以前は、アプリケーションでセッションを無限のリソースとして扱うことが多かったため、そのOracleサーバーを共有している他のアプリケーションに悪影響を与える可能性がありました。 私のアプリケーションが他の人とうまくやり取りし、そのようなリソースを独占しないことが重要であることを他の開発者に説得しようとしています。 Oracle DBAは、どの時点で、アプリケーションがセッションを過度に使用(または乱用)していると考えますか? 編集:現在、セッションの最大のコンシューマの1つは、ダイレクトパスロードを使用して複数(20〜30)のテーブルを並列に一括ロードするこの1つのコンポーネントです。
9 oracle 

4
MySQL DBAインタビューで何を尋ねればよいですか?
私はソフトウェア開発者で、MySQL DBAを雇うのを手伝っています。私たちが直面している主要な課題は次のとおりです。 Hibernateによりクエリとパフォーマンスが低下します。 データベース管理(バックアップ、チューニング、パッチ、セキュリティ)。 新しいデータソースからのデータの増加と古いデータの蓄積によるスケーラビリティ。 将来的には、データマイニングとデータウェアハウジングを開始する予定です。方法はわかりませんが、それが方向です。 私たちは通常、開発者にインタビューのために何かを作成するように依頼するプログラミング事例を持っていますが、同じ方法でDBAインタビューを行うのは少し難しいです。 面接をどのように行うべきかについて提案できますか?

2
SQL Serverがインデックス付きビューの列がNULL可能ではないことを認識できるようにするにはどうすればよいですか?
SQL Server 2008で次のインデックス付きビューが定義されています(テスト目的でgistから作業スキーマをダウンロードできます)。 CREATE VIEW dbo.balances WITH SCHEMABINDING AS SELECT user_id , currency_id , SUM(transaction_amount) AS balance_amount , COUNT_BIG(*) AS transaction_count FROM dbo.transactions GROUP BY user_id , currency_id ; GO CREATE UNIQUE CLUSTERED INDEX UQ_balances_user_id_currency_id ON dbo.balances ( user_id , currency_id ); GO user_id、currency_id、およびtransaction_amountすべてのように定義されているNOT NULLの列dbo.transactions。ただし、Management Studioのオブジェクトエクスプローラーでビュー定義を見ると、ビューの両方の列balance_amountと-able列transaction_countとしてマークさNULLれています。 私はいくつかのディスカッションを調べましたが、これはそれらの中で最も関連性が高く、SQL Serverがビュー列が常にであることをSQL Serverが認識するのに役立つ可能性のある関数のシャッフルを示唆していますNOT NULL。ただし、インデックス付きビューでは集約関数の式(たとえば、ISNULL()over …

4
OracleはエラーORA-01031を返します:権限が不十分です
「:権限が不足ORA-01031」私は実行すると、Oracleはエラーを返しますsqlplus / as sysdbaが、sqlplus sys/oracle123 as sysdbaしないのは、なぜ? Oracleバージョン:Oracle Database 10g Enterprise Editionリリース10.2.0.1.0-64ビット Linuxバージョン:SUSE Linux Enterprise Server 11(x86_64) Oracleは実行時にOS認証を使用することを知っていますsqlplus / as sysdba。sqlnet.oraも注意深く確認しましたSQLNET.AUTHENTICATION_SERVICES = (NTS)。 oracleユーザーのグループも変更しました。oracleユーザーは絶対にdbaグループに属しています。コマンドidを実行すると、次の情報が返されるためです。 oracle@linux-mage:~> id uid=103(oracle) gid=106(dba) groups=105(oinstall),106(dba) 別の情報として、を介してログオンできますsqlplus sys/oracle123 as sysdbaが、インスタンスをシャットダウンできません。 oracle@linux-mage:~> sqlplus sys/oracle123 as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on Mon Sep 5 16:29:57 2011 Copyright …
9 linux  oracle 

2
SQL Server:sysadmin権限を回避しながら適切な権限を与える方法
SQL Server 2008の1つのインスタンスにアクセスしたい同僚がいます。私は彼にこのインスタンスへの権利を与えなければならないでしょう。彼はする権利を持っている必要があります例えばです サーバーログインを追加および変更する メンテナンスプランの追加と変更(データベースからのバックアップの作成など) エージェントジョブのスケジュール 彼にsysadmin権限を与えたくないのですが、どのような権限を与える必要がありますか?


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