データベース管理者

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

5
SQL Serverがより多くのサーバーメモリを消費するのはなぜですか?
SQL ServerはサーバーRAMの87.5%を消費しています。これは最近、速度低下などの多くのパフォーマンスのボトルネックを引き起こしました。この問題を調査しました。インターネットで見つけることができる一般的な解決策の1つは、SQL Serverの最大制限を設定することです。これが行われ、多くの改善が得られました。最大メモリ値が設定されていない場合、SQL Serverがリソースを消費し続ける理由を知りたい

5
なぜvarcharデータ型がまだあるのですか?
私のデータベースの多くには、varcharとして定義されたフィールドがあります。私はアメリカに住んで働いているので、これはそれほど問題ではありませんでした(存在する唯一の言語は「アメリカ人」です。ahem) 約5年間データベースを操作した後、最終的にvarcharフィールドの性質が限られているという問題に遭遇し、nvarcharとしてデータを保存するためにフィールドを変更する必要があります。テーブルに別の更新を行い、varcharフィールドをnvarcharに変換しなければならなかった後、私は考えました-なぜこのようにまだ行うのですか?私はずっと前から、新しいテキストフィールドをすべてvarcharではなくnvarcharに定義するという精神的な決定をしました。これは、10年前に学校にいたときに教科書から学んだことです。 2011年で、昨年SQL Serverの新しいリリースがありました。代わりにnvarcharを使用できる/すべきであるのに、なぜvarcharデータ型をサポートし続けるのですか? nvarcharsはvarcharsの「2倍」であるとよく言われることを知っているので、varcarを保持するための1つの論点として、ストレージスペースの使用が考えられます。 ただし、今日のユーザーは、ストレージスペースを節約したい場合、デフォルトのUTF-16ではなくUTF-8としてデータを保存するようにnvarcharを定義できます。これにより、主に望ましい場合は8ビットエンコーディングが可能になりますが、DBに挿入される2〜8バイトのまれな文字が何も破損しないことが保証されます。 何か不足していますか?過去15〜20年でこれが変わっていない理由はありますか?

5
SHOW TABLE STATUSの結果から選択する方法
から返される行と列を制限したい SHOW TABLE STATUS MySQL 5.1のコマンド。SELECT通常の方法で結果を操作できるように、ステートメントを介してこの同じ情報を取得する方法はありますか?
36 mysql  select 

6
「ストアドプロシージャ」と「ストアドファンクション」の違いは何ですか?
したがって、この質問からのコメントは、PostgreSQLの「Stored Procedrues」と「Stored Funtions」にわずかな違いがあると述べています。 コメントはウィキペディアの記事にリンクしていますが、これの一部は当てはまらないようです(たとえば、SELECT声明で使用できるなど)。 構文自体は少し混乱しているようです。 CREATE FUNCTION emp_stamp() RETURNS trigger AS $emp_stamp$ BEGIN [...] END; $emp_stamp$ LANGUAGE plpgsql; CREATE TRIGGER emp_stamp BEFORE INSERT OR UPDATE ON emp FOR EACH ROW EXECUTE PROCEDURE emp_stamp(); を作成しますが、FUNCTIONとして参照しPROCEDUREます。 では、これら2つの違いは何ですか?

10
.frmおよび.ibdファイルからテーブルを復元しますか?
以前に/ var / lib / mysql / ddmsディレクトリのコピーを保存しました(「ddms」はスキーマ名です)。を実行して、新しくインストールしたUbuntu 10.04.3 LTSに新しいMySQLをapt-get install mysql-serverインストールしました。バージョン5.1がインストールされていると思います。/ var / lib / mysqlの下のddmsディレクトリをコピーすると、そのテーブルの一部は正常に機能します。これらは、3つのファイル(.frmファイル、.MYDファイル、および.MYIファイル)が関連付けられたテーブルです。 ただし、ファイルのセットが異なる2つのテーブル(.frmファイルと.ibdファイル)があります。これらの2つのテーブルは、phpMyAdminのテーブルリストには表示されませんでした。エラーログを見ると、次のように表示されます。 [ERROR] Cannot find or open table ddms/dictionary_item from the internal data dictionary of InnoDB though the .frm file for the table exists. Maybe you have deleted and recreated InnoDB data files but …
36 mysql  innodb 

4
PostgreSQLでのインデックス構築の進行状況の監視
PostgreSQLのインデックス作成の進行状況を監視する方法はありますか。私は大きなテーブルにインデックスを作成していますが、これがどのくらいの速さで起こっているのかを見たいです。 これを監視する方法はありますか?
36 postgresql  index 

1
SQL Server:CREATE INDEXコマンドの進行状況を追跡する方法は?
SQL Server 2014、標準エド 私は、dm_exec_requestsのpercent_completeがCREATE INDEXで機能せず、実際には、percent_completeが0のままになることを読んだことがあります。 現在、以下の方法を使用しています。これは、少なくとも動きを示しています(インデックス作成がブロックされていないこと)。しかし、プロセスを経て%10であるか、%99であるかはわかりません。 ここで説明した方法を試しました:https : //dba.stackexchange.com/a/102545/6229 しかし、それは明らかに間違ったest完了時間を示しています) どうすれば手掛かりを得ることができますか? SELECT percent_complete, estimated_completion_time, reads, writes, logical_reads, text_size, * FROM sys.dm_exec_requests AS r WHERE r.session_id <> @@SPID AND r.session_id = 58

2
SQL Serverでは、ストアドプロシージャをグループ化する目的は何ですか?
私が対処しなければならなかった最も厄介な問題の1つは、ストアドプロシージャグループに関係しています。ストアドプロシージャを指定するとusp_DoSomethingAwesome、を呼び出すことで別のグループにそのプロシージャを作成できますusp_DoSomethingAwesome;2。 システムによって生成された挿入、更新、および削除のレプリケーションストアドプロシージャの一部で発生したレプリケーションの問題(パブリッシャー:SQL 2000 Ent。、Dist / Sub:2008 R2 Ent。)のトラブルシューティングでこれを発見しました。 この「グループ化」能力を持つ背後にある目的/考え方は何ですか?

2
存在する場合、埋め込みSELECTステートメントよりも時間がかかります
次のコードを実行すると、22.5分かかり、1億6千万回の読み取りを行います。ただし、内側のselectステートメントだけを実行すると、15秒しかかからず、264kの読み取りが実行されます。補足として、選択クエリはレコードを返しません。 なぜIF EXISTSそれが非常に長く実行され、非常に多くの読み取りを行うのでしょうか?select文も変更しSELECT TOP 1 [dlc].[id]て、2分後に殺しました。 一時的な修正として、count(*)を実行し、その値を変数に割り当てるように変更しました@cnt。次に、IF 0 <> @cntステートメントを実行します。しかしEXISTS、selectステートメントでレコードが返された場合、少なくとも1つのレコードが見つかったらスキャン/シークの実行を停止count(*)し、完全なクエリを完了するため、より良いと思いました。私は何が欠けていますか? IF EXISTS (SELECT [dlc].[ID] FROM TableDLC [dlc] JOIN TableD [d] ON [d].[ID] = [dlc].[ID] JOIN TableC [c] ON [c].[ID] = [d].[ID2] WHERE [c].[Name] <> [dlc].[Name]) BEGIN <do something> END


3
MD5フィールドに最適なデータ型は何ですか?
読み取りが多いことがわかっているシステムを設計しています(1分あたり数万回の読み取り)。 names一種の中央レジストリとして機能するテーブルがあります。各行には、textフィールドrepresentationとkeyそのMD5ハッシュである一意のフィールドがありますrepresentation。1現在、このテーブルには数千万のレコードがあり、アプリケーションの存続期間中に数十億に達すると予想されています。 テーブルを参照する他の(スキーマとレコード数が非常に異なる)テーブルは多数ありnamesます。これらのテーブルのいずれかのレコードにname_keyは、機能的にはnamesテーブルへの外部キーであるが含まれることが保証されています。 1:ちなみに、ご想像のとおり、このテーブルのレコードは一度書き込まれると不変です。 テーブル以外の特定のnamesテーブルでは、最も一般的なクエリは次のパターンに従います。 SELECT list, of, fields FROM table WHERE name_key IN (md5a, md5b, md5c...); 読み取りパフォーマンスを最適化したいと思います。私が最初にやるべきことは、インデックスのサイズを最小化することだと思います(ただし、間違っていると証明されてもかまいません)。 質問: /に最適なデータ型は何ですかれるkeyとname_key、列?以上 を使用する理由はありますか?または?hex(32)bit(128)BTREEGIN

4
PostgreSQLデータベーステーブルの最終変更日を取得する
私は私のテーブルは、それが中に記述されているように、そのファイルの更新日時をチェックすることによって、変更されたときに取得しようとしているこの回答。しかし、結果は常に正しいとは限りません。ファイルの更新日は、テーブルを更新してから数分後に更新されます。それは正しい行動ですか?PostgreSQLはテーブルの変更をキャッシュに保存してからハードドライブにフラッシュしますか? だから、テーブルの正しい最終変更日を取得するにはどうすればよいですか(自動バキューム変更も大丈夫だと仮定しましょう)? Linux Centos 6.2 x64でPostgreSQL 9.2を使用しています。
35 postgresql 

4
データベースを縮小する必要があります-多くのスペースを解放しました
この質問はさまざまな形式でここに尋ねられますが、質問は次のように要約されます。 データベースの縮小は危険を伴うことを知っています。この場合、大量のデータを削除したため、二度と使用しません。 データベースを縮小するにはどうすればよいですか?どのファイルを縮小しますか? これを行う際の考慮事項は何ですか? 後は何をすべきですか? 大規模なデータベースの場合はどうなりますか?少しずつ縮小できますか?

2
SQLバッチ、ステートメント、RPCの違いは?
SQLバッチ、T-SQLステートメント、およびリモートプロシージャコールの違いは何ですか? T-SQLコードの一部がバッチまたはステートメントであるかどうかを確認するにはどうすればよいですか?
35 sql-server 

1
削除と切り捨て
コマンドDELETEとTRUNCATEコマンドの違いをより深く理解しようとしています。内部についての私の理解は、次のようなものに沿っています。 DELETE->データベースエンジンは、関連するデータページおよび行が入力されているすべてのインデックスページから行を見つけて削除します。したがって、インデックスが多いほど、削除に時間がかかります。 TRUNCATE ->すべてのテーブルのデータページをまとめて削除するだけで、テーブルの内容を削除するためのより効率的なオプションになります。 上記が正しいと仮定します(正しくない場合は修正してください): さまざまな回復モードが各ステートメントにどのように影響しますか?なんらかの効果がある場合 削除するとき、すべてのインデックスがスキャンされますか、それとも行があるインデックスのみがスキャンされますか?私はすべてのインデックスがスキャンされていると仮定します(シークされませんか?) コマンドはどのように複製されますか?SQLコマンドは各サブスクライバで送信および処理されますか?それとも、MSSQLはそれよりも少しインテリジェントですか?

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