データベース管理者

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

1
SQL Profiler / perfmonの代わりにいつ拡張イベントを使用する必要がありますか?
拡張イベントは、より優れたテクノロジーであり、サーバーへの負荷が少ないように見えますが、SQL Profiler / perfmonには優れたツールがあります。また、拡張イベントには学習曲線が急勾配になっているようです。それぞれどのコンテキストで使用する必要がありますか?拡張されたイベントを利用するために、急な学習曲線を通過する価値はありますか?

4
NULLが最初にソートされるのはなぜですか?
列にNULL値があり、値の昇順で並べ替えるときに、NULLが最初にソートされるのはなぜですか? select 1 as test union all select 2 union all select NULL union all select 3 union all select 4 order by test 結果として NULL 1 2 3 4 NULLは「不定」または「不明」の可能性があると考え続けます。その場合、値は他のすべての値よりも大きくなる可能性があるため、最後にソートしませんか?(または、これはどこかのソートオプションですか?) 私はSQL Server 2008R2を使用していますが、これはすべてのSQL Server、おそらくすべてのRDBMSに当てはまると思われます。

5
空の列はテーブル内のスペースを占有しますか?
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 7年前に移行され ました。 非常に基本的な情報を保持するテーブルがあります。タイトルといくつかの日付フィールドのみ。コメントと呼ばれるvarchar(4000)というフィールドが1つあります。ほとんどの場合、空白のままにしますが、ここに大量のデータを入力することもあります。これは本当に悪いデザインですか?または、これはわずかに非効率ですか? この列に別のテーブルを作成する方が良いと思います。 注:これはSQL Server 2008です

1
SQL Server DDLでトランザクションを使用するには?
すべての挿入が単一のストアドプロシージャによって行われるログインテーブルがあります。 CREATE TABLE dbo.LogTable( LogRefnr int IDENTITY(1, 1) NOT NULL, LogQuery varchar(255) NOT NULL, LogTime datetime NOT NULL, logQueryDuration int NULL, LogSessionID int NULL, CONSTRAINT PK_Log PRIMARY KEY CLUSTERED (LogRefnr) ) go Create procedure DBO.LogInsert ( @Query varchar(255), @time datetime, @duration int, @SessinID int) as begin Insert into LogTable ( …

7
DBAは、SQL以外のシステム言語でプログラミングする方法を知る必要がありますか?
データベース管理者は、「SQL」だけでなく、システムまたはアプリケーションレベルのプログラミング言語(.NETやPHPなど)をどの程度知っている必要がありますか? この質問の目的では、SQLの領域外のデスクトップまたはサーバー言語に関する質問であるため、この回答(SQL ANSI 86、SQL ISO 87、SQL:2008)に特定のバージョンのSQL標準は考慮されません。

1
MAX行を取得する方法
SQL Serverでは、データセットの最大行を取得するのは常に苦痛でした。パフォーマンスと保守性に関するいくつかのガイダンスを使用して、最大行を取得するメソッドのリストを探しています。 サンプル表: DECLARE @Test TABLE (ID INT IDENTITY(1,1), name VARCHAR(50), dateOfBirth DATETIME, TaxNumber varchar(10)) INSERT INTO @Test (name, dateOfBirth, TaxNumber) SELECT 'Fred', convert(datetime, '25/01/1976', 103), '123' UNION ALL SELECT 'Bob', convert(datetime, '03/03/1976', 103), '234' UNION ALL SELECT 'Jane', convert(datetime, '13/06/1996', 103), '345' UNION ALL SELECT 'Fred', convert(datetime, '14/02/1982', 103), …
20 sql-server 

6
PostgreSQLデータベースを管理するための優れた無料のツールはありますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、データベース管理者のStack Exchangeのトピックになるようにします。 4年前に閉鎖されました。 以前、phpmyadminを使用してMySQLデータベースを管理していましたが、PostgreSQLデータベースを管理したいと考えています。PostgreSQLデータベースはサーバー上にありますが、Webサーバー上にはないため、PHPは使用しません。 PostgreSQLデータベースを管理するための優れた無料のツールはありますか? 私はpgAdmin IIIを試しましたが、以前に使用したphpmyadminと比較すると、直感的なアプリケーションとはほど遠いものでした。PostgreSQL DBAは通常何を使用していますか?彼らはpgAdmin IIIのようなグラフィカルツールを使用していますか、それともコマンドラインツールですか?

2
インデックスとパーティション
インデックスのみでパフォーマンスの向上を達成できないのはなぜですか?そのため、テーブルパーティションのような他の手法が必要になりますか?質問はパフォーマンスのみに関連しています。もちろん、異なるパーティションを異なるテーブルスペースに配置することはできますが、これはインデックスでは達成できない他の効果をもたらします。 または言い換えれば、パフォーマンスの面でのみ:テーブルのパーティション分割と同じパフォーマンスの向上を達成することは可能ですか?

2
トランザクションログの再構築
トランザクションログファイルが(SQL Serverがシャットダウンされている間に)削除された非常に大きなデータベース(〜6TB)があります。 データベースの切り離しと再接続。そして トランザクションログファイルの削除の取り消し ...しかし、これまでのところ何も機能していません。 現在実行中です: ALTER DATABASE <dbname> REBUILD LOG ON (NAME=<dbname>,FILENAME='<logfilepath>') ...しかし、データベースのサイズを考えると、これを完了するにはおそらく数日かかります。 ご質問 上記のコマンドと次のコマンドに違いはありますか? DBCC CHECKDB ('<dbname>', REPAIR_ALLOW_DATA_LOSS) REPAIR_ALLOW_DATA_LOSS代わりに実行する必要がありますか? データベースを再構築できるようにデータが他のソースから派生していることは注目に値しますが、すべてのデータを再挿入するよりもデータベースを修復する方がはるかに迅速になると思われます。 更新 スコアを保持している場合:ALTER DATABASE/REBUILD LOGコマンドは約36時間後に完了し、報告しました: 警告:データベース 'dbname'のログが再構築されました。トランザクションの一貫性が失われました。RESTOREチェーンが破損し、サーバーは以前のログファイルのコンテキストを失ったため、それらが何であるかを知る必要があります。 DBCC CHECKDBを実行して、物理的な一貫性を検証する必要があります。データベースはdbo専用モードになっています。データベースを使用可能にする準備ができたら、データベースオプションをリセットし、余分なログファイルを削除する必要があります。 その後、DBCC CHECKDB成功しました(約13時間かかりました)。データベースバックアップの重要性(そしてプロジェクトマネージャーにサーバーへのアクセスを許可すること...)をすべて知ったとしましょう。

5
SQL Serverデータベースの状態を監視するために使用する最適なクエリは何ですか?
クエリを実行して、データベースのステータスに関する重要な情報を取得できるようにしたいと思います。つまり、データベースが良好な状態にあるかどうかをクエリで確認できるようにする必要があります。 これは、このチェックのために継承したクエリです。 SELECT name AS [SuspectDB], DATABASEPROPERTY(name, N'IsSuspect') AS [Suspect], DATABASEPROPERTY(name, N'IsOffline') AS [Offline], DATABASEPROPERTY(name, N'IsEmergencyMode') AS [Emergency], has_dbaccess(name) AS [HasDBAccess] FROM sysdatabases WHERE (DATABASEPROPERTY(name, N'IsSuspect') = 1) OR (DATABASEPROPERTY(name, N'IsOffline') = 1) OR (DATABASEPROPERTY(name, N'IsEmergencyMode') = 1) OR (has_dbaccess(name) = 0) そのクエリが結果を返す場合、データベースが疑わしい状態または潜在的に悪い状態にあるという仮定が行われます。 これを行うためのより良い方法はありますか?

4
MySQLの「CREATE INDEX」は線形操作ですか?
私が言いたいのは次のことです: n行を含むテーブルにインデックスを作成するのにt時間がかかる場合。1000*nほぼ1000*t時間をかけて同じテーブルにインデックスを作成します。 私が達成しようとしているのは、はるかに小さいテストデータベースに同じインデックスを作成することで、運用データベースにインデックスを作成するのにかかる時間を見積もることです。
20 mysql  index 

5
テーブルとビューに名前を付けるとき、どの標準に従うべきですか?
テーブルとビューに名前を付けるとき、どの標準に従う必要がありますか?たとえば、テーブル名の先頭にtbl_のようなものを置くのは良い考えですか?ct_、lut_、codes_のような方法でコード/ルックアップテーブルを指定する必要がありますか?他にすべきこと/禁止事項はありますか? 私はMS SQL Serverを使用しており、多くのテーブルを持つ多くのデータベースを持っているので、いくつかの合理的なサポートを備えた標準として使用できるものがあると便利です。

5
T-SQLでIFを使用すると、実行計画のキャッシングが弱くなるか壊れますか?
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 7年前に移行され ました。 t-SQLバッチでIFステートメントを使用すると、パフォーマンスが低下することが示唆されています。このアサーションを確認または検証しようとしています。SQL Server 2005および2008を使用しています。 アサーションは、次のバッチでのことです:- IF @parameter = 0 BEGIN SELECT ... something END ELSE BEGIN SELECT ... something else END 次の実行には別のブランチが必要な場合があるため、SQL Serverは生成された実行プランを再利用できません。これは、現在の実行で必要なブランチを既に決定できることに基づいて、SQL Serverが実行プランから1つのブランチを完全に削除することを意味します。これは本当ですか? さらに、この場合に何が起こるか:- IF EXISTS (SELECT ....) BEGIN SELECT ... something END ELSE BEGIN SELECT ... something else END どのブランチを実行するかを事前に決定できない場合


2
接続が失われた/壊れた場合、Postgresの長時間実行クエリは中止されますか?
Postgresへの接続を開いて長時間実行クエリを発行してから接続を切断すると(たとえば、接続を開いたクライアントプロセスを強制終了します)、長時間実行クエリは引き続き実行されますか、それとも自動的に中止されますか?これは構成可能ですか? (私はPostgresql 9.2.9を使用しています)

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