データベース管理者

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

2
DELETEがパフォーマンスに長引く影響を与えるのはなぜですか?
最後に、@ table変数と#tempテーブルのパフォーマンスを比較するためのテストスクリプトがあります。私はそれを正しく設定したと思います-パフォーマンスのタイミングはDELETE / TRUNCATEコマンドの外で取られます。私が得ている結果は次のとおりです(ミリ秒単位の時間)。 @Table Variable #Temp (delete) #Temp (truncate) --------------- -------------- ---------------- 5723 5180 5506 15636 14746 7800 14506 14300 5583 14030 15460 5386 16706 16186 5360 念のためGetDate()、バッチではなくステートメントの時点でCURRENT_TIMESTAMP(別名)が取得されることを示しているため、TRUNCATE / DELETEとSET @StartTime = CURRENT_TIMESTAMPステートメントの相互作用はありません。 select current_timestamp waitfor delay '00:00:04' select current_timestamp ----------------------- 2012-10-21 11:29:20.290 ----------------------- 2012-10-21 11:29:24.290 DELETEを使用してテーブルをクリアする場合、最初の実行と後続の実行の間のジャンプは非常に一貫しています。DELETEの理解に欠けているものは何ですか?これを何度も繰り返し、順序を交換し、成長を必要としないようにtempdbのサイズを調整しました。 CREATE TABLE …

2
SQLコンパイルはSQL Serverのパフォーマンスにどの程度影響しますか?
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 7年前に移行され ました。 SQL Server 2005のインスタンスをプロファイリングしていますが、PerfMonのSQLServer:SQL Statistics - SQL Compilations/secメトリックを使用すると、平均が約170程度であることがわかります。 SQLプロファイラーを作成し、SP:CompileまたはSQL:Compileイベントを探しました。どうやら存在しません。私が見つけたStored Procedure/SP:RecompileとTSQL/SQL:StmtRecompileのイベント。プロファイラーに表示されるデータの量は、これらが間違ったイベントであることを示唆していますが、よくわかりません。 だから私の質問。これらのいずれかの答えは素晴らしいでしょう。 SQL Serverで何がコンパイルされているかを正確に確認するにはどうすればよいですか? 間違った指標を選んで調べましたか?PerfmonまたはSQL Profilerのどちらですか? Stored Procedure/SP:RecompileおよびTSQL/SQL:StmtRecompileSQLプロファイラでのイベント...彼らは、期間メトリックが含まれていません。これらのイベントがシステムへのタイミングの影響を確認する方法を提供しない場合、システムへのこれらのイベントの影響をどのように測定できますか。

3
MongoDB:RAM要件
インデックス全体をメモリ/ RAMに格納するだけで十分ですか、またはmongodbは、高速読み取り用のデータさえ格納するためにできるだけ多くのRAMを割り当てようとしますか? mongodb +他のアプリケーションを実行したいのですが、「max_memory_allocated_or_reserved = 8GB」と言えば、mongodbがRAMの範囲を定義できない唯一のアプリケーションのようです。 そうする方法がない場合、私はom-killerに、mongodは「悪い」プロセスであり、私の意見ではベストプラクティスではないことを説明する必要があります。
20 mongodb 

3
出力ストリームに通知を取得する方法は?
関数にデバッグメッセージがあります。それらのメッセージは RAISE NOTICE 'Value of id : %', id; ログファイルを設定します \o messages.txt それから私は私がする必要があることをします \i process.sql そして実行が終了したとき\o。 問題は、messages.txtに通知によって生成されたメッセージがないことです。メッセージは画面に表示されますが、messages.txtに書き込みたい どうすればそれができますか? 私は使用しようとしましたがRAISE LOG...、メッセージはログファイルに書き込まれます...それは私が望むものではありません。 回避策があります plsql -f /path/to/process.sql > messages.txt 2>&1 しかし、\ oで指定されたファイルにメッセージがあるplsqlクライアントで\ iと\ oを使用する方法を知りたい cygwin上の私のクライアントはpsql(PostgreSQL)8.2.11で、サーバーバージョンは9.0.7です
20 postgresql 

2
Function / ProcedureでのDML操作後にコミットが必要ですか?
function / procedureでinsert / delete / updateの後にcommitを書く必要があるかどうか知りたいのですが? 例: create or replace function test_fun return number is begin delete from a; return 0; end; または手順 create or replace procedure aud_clear_pro as begin delete from a; end; 削除後にコミットする必要がありますか? 次の状況を理解できません。 SQLウィンドウから関数/プロシージャを呼び出す場合、コミットが必要です しかし dbms_schedulerを使用して関数/手順をスケジュールし、ジョブを実行すると、deleteステートメントが自動的にコミットされます。 どうして?

2
innodb_buffer_poolを設定する理由とその理由
170GBのInnoDBインデックスとデータがあります。 パフォーマンスを向上させるために、innodb_buffer_poolサイズを再調整する必要があります。InnoDBテーブルの最大テーブルサイズ(インデックス+データ)は28GBです。 そのため、innodb_buffer_poolの最適なサイズはどうでしょうか。 更新 このローカルデータベースをec2に移行するので、innodbの現在の統計に従ってRAMを設定します。そのため、使用可能なRAMを確保するためにバッファープールのサイズが必要です。 テーブルごとのファイルが有効になっています。 Linuxマシンを使用しています。
20 mysql  innodb 




2
FILESTREAMデータを除くデータベースの復元
コンテキスト 下部に大規模なデータベースを持つシステムを開発しています。これは、SQL Server 2008 R2で実行されているMS SQLデータベースです。データベースの合計サイズは約12 GBです。 これらのうち、約8.5 GBが単一のテーブルにありますBinaryContent。名前が示すように、これは、あらゆる種類の単純なファイルをBLOBとしてテーブルに直接格納するテーブルです。最近、FILESTREAMを使用して、これらすべてのファイルをデータベースからファイルシステムに移動する可能性をテストしています。 データベースに必要な変更を問題なく行いましたが、移行後もシステムは正常に動作しています。BinaryContentテーブルは次のように大まかになります。 CREATE TABLE [dbo].[BinaryContent]( [BinaryContentID] [int] IDENTITY(1,1) NOT NULL, [FileName] [varchar](50) NOT NULL, [BinaryContentRowGUID] [uniqueidentifier] ROWGUIDCOL NOT NULL ) ON [PRIMARY] FILESTREAM_ON [FileStreamContentFG] ALTER TABLE [dbo].[BinaryContent] ADD [FileContentBinary] [varbinary](max) FILESTREAM NULL ALTER TABLE [dbo].[BinaryContent] ADD CONSTRAINT [DFBinaryContentRowGUID] DEFAULT (newsequentialid()) FOR [BinaryContentRowGUID] …

1
列ストアインデックスの構造は何ですか?
コードネームDenaliが付けられたSQL Server 2012の新機能の1つに、Columnstoreインデックスがあります。 Bツリー構造、リーフレベルとBツリーページのストレージの違い、含まれているフィールドの影響、それらを使用するための最適化、キーの順序など、通常の古い行ストアインデックスについてかなり知っています。 列ストアインデックスの内部情報を得るのに苦労しています。 どのように構成されていますか? Bツリーはありますか?その他の構造はありますか? データはどのように編成されていますか? どの種類の特定の演算子を使用するのが最適ですか? 他のアンチパターンを使用する際に避けるべきものはありますか? それらについて私が知ることができるものの多くは、基本的に「通常の」インデックスの正反対です。つまり、キーの順序付け、含まれるフィールド、非クラスタ化のみです。 どんな洞察も大歓迎です。

2
IDENTITY_INSERT ONが一度に1つのテーブルでしか許可されないのはなぜですか?
これは、というケースですIDENTITY_INSERTが一度に一つのデータベーステーブルにONにのみ設定することができますが、なぜですか?IDENTITY列はグローバルに一意ではないため、複数のテーブルに同時にIDを挿入することによって引き起こされる危険な状況は考えられません(少なくともIDENTITY INSERTを使用するよりも危険ではありません)。 IDENTITY INSERTはめったに使用されるべきではありませんが、ハードリミットの理由は何ですか?
20 sql-server 

2
GROUP BY B、AとGROUP BY COALESCE(B、A)の違い
私は自分自身を非常に混乱させてきました。 GROUP BY COALESCEを使用したい状況を誰かが親切に説明できますか? 私の推測では、列B(Bがnullでない場合)によってデータのセットを条件付きでグループ化し、それ以外の場合は列Aによってグループ化する場合に使用します。それは正しいですか?
20 oracle  query 

2
特定のOracle例外のみをキャッチして処理する方法
このと、この私は、ORA-00955のための事前定義された名前付きシステム例外がないことを、推測します。 エラーORA-00955のみをキャッチするために次のように書き直すにはどうすればよいですか? begin EXECUTE IMMEDIATE 'CREATE SEQUENCE S_TEST START WITH 1 INCREMENT BY 1'; exception when OTHERS then Null; end; ところで、エラーコードを提供するだけでエラーをキャッチする構文はありますか?
20 oracle  exception 


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