データベース管理者

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

4
この特定の冗長な派生テーブルの順序が保証されない可能性は本当にありますか?
ルーカスエダーとのTwitter会話でこの質問に遭遇しました。 正しい動作は、最も外側のクエリにORDER BY句を適用することですが、ここでは、最も外側のクエリでDISTINCT、GROUP BY、JOINまたはその他のWHERE句を使用していないため、RDBMSは単に内部クエリで並べ替えられた受信データ? SELECT * FROM ( SELECT * FROM table ORDER BY time DESC ) AS t この例をPostgreSQLで実行すると、少なくとも、内部クエリとこの派生テーブルの両方の例の実行プランが同じになり、同じ結果セットが得られます。 したがって、プランナーは最も外側のクエリを冗長にするか、単に内部のテーブルからの結果を通過させるため、単純にそのクエリを破棄すると想定します。 これはそうではないかもしれないと誰もが思いますか?


1
スーパーユーザーなしでPostgresqlを有効にする拡張機能
ユーザーのロールとデータベースを自動的に作成するスクリプトを備えたPostgreSQL 9.5サーバーがあります。これらのデータベース内では、特定の拡張機能(pgcryptoなど)を有効にすると便利ですが、私が理解しているように、実行するにはスーパーユーザーである必要がありますCREATE EXTENSION。スーパーユーザーアカウントで手動でログインせずに、このような拡張機能を有効にする方法はありますか?

1
SSMSオプション「追加の実行オプションなしでストアドプロシージャのショートカットを実行する」とは何ですか?
これは冗長なオプションです。ドキュメントはなく、ウェブ検索も役に立ちません。クエリを実行しているとき、チェックされているオプションとチェックされていないオプションの違いに気づきません。この設定は何を制御しますか?

2
CTEに挿入された行を同じステートメントで更新できないのはなぜですか?
PostgreSQL 9.5では、次のように作成された単純なテーブルがあるとします。 create table tbl ( id serial primary key, val integer ); SQLを実行して値を挿入し、次に同じステートメントでUPDATEします。 WITH newval AS ( INSERT INTO tbl(val) VALUES (1) RETURNING id ) UPDATE tbl SET val=2 FROM newval WHERE tbl.id=newval.id; その結果、UPDATEは無視されます。 testdb=> select * from tbl; ┌────┬─────┐ │ id │ val │ ├────┼─────┤ │ 1 │ …
12 postgresql  cte 

3
Oracleのビルド済み仮想マシンのデフォルトのユーザー名とパスワードは何ですか?
DeveloperDaysVM2016-06-02_13.ovaをhttp://www.oracle.com/technetwork/database/enterprise-edition/databaseappdev-vm-161299.htmlからダウンロードし、Virtual Boxに正常にロードしました。 「oracle」ユーザーとしてログインすると、デスクトップが表示されます。 仮想マシン内からFirefoxを開き、次の場所に移動しました。 http:// localhost:8080 / ords / hrrest / employees /そして、JSON形式で従業員のリストを正常に受信しました。データベースが稼働していることはわかっています。 私の唯一の問題は、データベースにログインできないことです。 私は試した: [oracle@vbgeneric oracle]$ sqlplus oracle SQL*Plus: Release 12.1.0.2.0 Production on Tue Jul 5 17:32:22 2016 Copyright (c) 1982, 2014, Oracle. All rights reserved. Enter password: oracle ERROR: ORA-01017: invalid username/password; logon denied Enter user-name: 私のORACLE_SID = …

2
管理スタジオでスタックしたタスク、それらをどのように処理しますか?
Management Studioで[データベースをオフラインにする]をクリックした後、このメッセージはハングしたままで、閉じるをクリックしても閉じません。 管理スタジオでこれらのようなスタックした仕事に対処する良い方法は何ですか?あなたは活動モニターを介してそれらを殺すことができますか?このジョブの通過を停止しているプロセスを探して終了する必要がありますか?
12 sql-server  ssms 

2
ストアドプロシージャでのトランザクション
単一のトランザクションでUPDATEとINSERTを実行する必要があります。そのコードはそれ自体で問題なく機能しますが、簡単に呼び出して必要なパラメーターを渡すことができるようにしたいと思います。このトランザクションをストアドプロシージャにネストしようとすると、多くの構文エラーが発生します。 次のコードをカプセル化して簡単に呼び出せるようにするにはどうすればよいですか? BEGIN TRANSACTION AssignUserToTicket GO DECLARE @updateAuthor varchar(100) DECLARE @assignedUser varchar(100) DECLARE @ticketID bigint SET @updateAuthor = 'user1' SET @assignedUser = 'user2' SET @ticketID = 123456 UPDATE tblTicket SET ticketAssignedUserSamAccountName = @assignedUser WHERE (ticketID = @ticketID); INSERT INTO [dbo].[tblTicketUpdate] ([ticketID] ,[updateDetail] ,[updateDateTime] ,[userSamAccountName] ,[activity]) VALUES (@ticketID, 'Assigned ticket to …

3
可用性グループデータベースが同期なし/回復保留モードでスタックしている
SQL Server 2014 SP1(12.0.4422.0)インスタンスのストレージをアップグレードしているときに、SQL Serverの再起動後に2つのデータベースがセカンダリで起動しないという問題が発生しました。新しい(大きい)SSDを取り付け、データファイルを新しいボリュームにコピーしている間、サーバーは数時間オフラインでした。SQL Serverを再起動すると、2つを除くすべてのデータベースが再び同期を開始しました。他の2つは、SSMS で同期なし/回復保留中と表示されました。 以前に同様の同期しない/回復中の問題があったため、可用性グループ->可用性データベースセクションでステータスを確認しましたが、赤いXが表示されていました。 データ移動を一時停止しようとすると、エラーメッセージが生成されました。 可用性グループ「SENetwork_AG」の可用性レプリカ「ny-sql03」にあるデータベース「StackExchange.Bycycles.Meta」でのデータ移動の一時停止に失敗しました。(Microsoft.SqlServer.Smo) 追加情報:Transact-SQLステートメントまたはバッチの実行中に例外が発生しました。(Microsoft.SqlServer.ConnectionInfo) ファイル「StackExchange.Bycycles.Meta」にアクセスできません。ファイルにアクセスできないか、メモリまたはディスク領域が不足しています。詳細については、SQL Serverエラーログを参照してください。(Microsoft SQL Server、エラー:945) チェックしたところ、ファイルは存在し、権限の問題はありませんでした。また、管理下のSSMSでSQL Serverログを確認しましたが、保留中の回復や2つのデータベースの問題については何も表示されませんでした。 ヘルプを検索したところ、データベースを復元する必要があると述べた2つの異なる記事が見つかりました。 データベースがリカバリ保留状態でスタックしているときに、セカンダリでデータレプリケーションを再開する方法はありますか?

1
PostgreSQLのテーブルスペースを移動するにはどうすればよいですか?
PostgreSQL 9.3のテーブルスペースをから/old/dirに物理的に移動する方法はあり/new/dirますか?mvディレクトリだけを表示して、テーブルスペースがにあることをPostgreSQLに伝えたいと思います/new/dir。以下のように見えるALTER TABLESPACEだけで名前を変更することができます。 新しいテーブルスペースを作成したり、データベースをそこに移動したりすることは避けたいです。これは、多くの時間とディスク領域を必要とする低速なコピープロセスになると思います。私はまた、シンボリックリンク避けたい/old/dirに/new/dir。

6
1つの更新ステートメントで列の値を切り替える
システムのエラーにより、データベースで男性(M)を女性(W)に、またはその逆に誤って命名していることがわかりました。列には1文字しか入力できません。一時テーブルを使用せずに、これを解決する更新クエリを1つ記述します。 この質問は、最近行ったインタビューで尋ねられました。同様の質問がある可能性があるインタビューをさらに調査するため、これをどのように処理するかについてのアイデアを得たいと思いました。
12 update 

2
変更の追跡を含むフルテキストカタログ:そのテーブルの変更追跡が有効になっていない場合、AUTOは自動的に更新されますか?
フルテキストインデックスを最新の状態に保つためのデータベーステーブルがあります。ただし、これが発生しているのはまったくわかりません(最後に表示されたログは手動でトリガーしたときだったため、ログにエラーはありません)。 これが私が見ているものです... テーブルの上に... これが自動的に行われない理由ですか?

2
InnoDBはコミットする前にトランザクションデータをどこに格納しますか?
私は、JDBCテクノロジーを使用して、自宅でいくつかのテストをREAD_COMMITTED行いREAD_UNCOMMITTEDました。 READ_UNCOMMITTED実際にコミットされていないデータ、たとえばまだコミットされていないトランザクションからのデータを読み取ることができることがわかります(UPDATEクエリを実行できます)。 ご質問 READ_UNCOMMITTEDトランザクションがコミットされていないデータを別のトランザクションから読み取ることができるように、コミットされていないデータはどこに保存されますか? READ_COMMITTEDトランザクションがコミットされていないデータを読み取ることができない、つまり「ダーティリード」を実行できないのはなぜですか。この制限を強制するメカニズムは何ですか?

3
SQL Server 2014ではクエリが100倍遅くなり、行カウントスプール行が原因を推定していますか?
SQL Server 2012では800ミリ秒で実行され、SQL Server 2014では約170秒かかるクエリがあります。これを、Row Count Spool演算子のカーディナリティーの見積もりが悪いものに絞り込んだと思います。スプールオペレーターについて少し読んだことがありますが(例:こことここ)、まだいくつかのことを理解できません。 このクエリにRow Count Spool演算子が必要なのはなぜですか?正確さのために必要だとは思わないので、具体的にどのような最適化を提供しようとしているのですか? SQL ServerがRow Count Spool演算子への結合がすべての行を削除すると推定するのはなぜですか? これはSQL Server 2014のバグですか?もしそうなら、私はConnectにファイルします。しかし、私は最初により深い理解をお願いします。 注:LEFT JOINSQL Server 2012とSQL Server 2014の両方で許容可能なパフォーマンスを実現するために、クエリをとして書き換えるか、テーブルにインデックスを追加できます。この質問は、この特定のクエリを理解し、詳細に計画することに関するもので、詳細については説明しません。クエリの言い方を変えるには 遅いクエリ 完全なテストスクリプトについては、このPastebinを参照してください。これが私が見ている特定のテストクエリです: -- Prune any existing customers from the set of potential new customers -- This query is much slower than expected in SQL Server 2014 SELECT …

2
PostgreSQLでGINインデックスを使用するときにORDER BYソートを高速化する方法は?
私はこのようなテーブルを持っています: CREATE TABLE products ( id serial PRIMARY KEY, category_ids integer[], published boolean NOT NULL, score integer NOT NULL, title varchar NOT NULL); 製品は複数のカテゴリに属する​​ことができます。category_ids列は、すべての製品のカテゴリのIDのリストを保持します。 典型的なクエリは次のようになります(常に単一のカテゴリを検索します): SELECT * FROM products WHERE published AND category_ids @> ARRAY[23465] ORDER BY score DESC, title LIMIT 20 OFFSET 8000; スピードアップするには、次のインデックスを使用します。 CREATE INDEX idx_test1 ON products …

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