データベース管理者

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

4
これはデータベースを設計する標準的な方法ですか?
最近、職場でデータベースでリレーションシップがどのように定義されるかを知り、これが標準的な方法であるかどうか疑問に思いました。 プロセスAとプロセスBの2つのプロセスがあるとします。プロセスBはプロセスAの結果に依存するため、プロセスBの実行とプロセスAの実行の間に定義する必要がある関係があります。これが関係の定義方法です。 TableProcessA: Id そして TableProcessB: Id ProcessAId さて、これまでのところ、私には物事は理にかなっていますが、それから、私とテーブルのデザインに対する私の理解が少し奇妙になっています。TableProcessAまたはTableProcessBで行が作成されるたびに、それぞれに対してグローバルに一意のIDを作成する関数が呼び出されます。そのため、基本的に、Idはテーブルだけでなくデータベース全体に対しても一意であるため、TableProcessAおよびTableProcessBのすべてのIdフィールドには一致が含まれません。 私の質問は、これはどのくらい標準的ですか?各テーブルには、データベース全体ではなく、テーブルに固有の自動インクリメントIDが必要であるという考えに思いつきました。

5
簡素化/自動化されたデータファイルの空きディスク領域の再利用
Oracleバージョン11gの場合: グーグル後、テーブルを削除した後に空きスペースを再利用する簡単な方法が見つかりません。 データファイルがどのように断片化するか、データファイルの最後にある「空のスペース」を移動するために実行する必要がある退屈なクエリの大きなスタック(テーブル別のテーブル... 200テーブルあります!?) 次に、どれだけ削減できるかを「推測」してデータファイルのサイズを削減する必要があります。または、「ブロックサイズ」を正確に把握しておく必要があります...最後に、「インデックスの再構築」を忘れないでください。 例を参照してください:http : //asktom.oracle.com/pls/asktom/f?p=100 :11: 0::::P11_QUESTION_ID : 54178027703899 およびhttp://www.oracle-base.com/articles/misc/ReclaimingUnusedSpace.php テーブルスペース名またはデータファイル名を指定すると、その仕事に役立つ単純なPL / SQLプロシージャはありますか?または同様のOracleツール?

3
毎週木曜日またはその他の曜日から始まる週次結果でSQLステートメントを改善するにはどうすればよいですか?
私はまったくの初心者ですが、これを行う良い方法がどこにもありませんでした。週のさまざまな時間に記録される統計を含むデータベーステーブルがあります。報告週は木曜日に始まります。テーブルには、データがいつ記録されたかを格納する日付スタンプ列(日付)が含まれています。 特定の週のデータを取得する必要があります(レポート週は木曜日から始まります)。次のクエリを作成しました。 SELECT * FROM `table` WHERE 1 = CASE WHEN WEEKDAY(NOW()) = 0 THEN DATEDIFF(NOW(),`date`) BETWEEN -2 AND 4 WHEN WEEKDAY(NOW()) = 1 THEN DATEDIFF(NOW(),`date`) BETWEEN -1 AND 5 WHEN WEEKDAY(NOW()) = 2 THEN DATEDIFF(NOW(),`date`) BETWEEN -0 AND 6 WHEN WEEKDAY(NOW()) = 3 THEN DATEDIFF(NOW(),`date`) BETWEEN -6 AND 0 …
8 mysql  mariadb 

3
すべての重複を削除する
すべての重複を削除しようとしていますが、単一のレコードのみ(短いID)を保持しています。次のクエリは重複を削除しますが、すべてのコピーを削除して元のコピーを維持するには、多くの繰り返しを必要とします。 DELETE FROM emailTable WHERE id IN ( SELECT * FROM ( SELECT id FROM emailTable GROUP BY email HAVING ( COUNT(email) > 1 ) ) AS q ) そのMySQL。 Edit#1 DDL CREATE TABLE `emailTable` ( `id` mediumint(9) NOT NULL auto_increment, `email` varchar(200) NOT NULL default '', PRIMARY KEY (`id`) …
8 mysql  query  delete 

2
MySQL Auto_incrementが2行2列に進む
先日、MySQL Workbenchをインストールし、会社のデータベースにアクセスして、自分で作業するためのテーブルを作成しました。ここまでは順調ですね。問題は、auto_incrementが2ずつ増加していることに気づいたことです。次に例を示します。 ID NAME 1 Paul 3 Jack 5 Louis 7 John ... 私がするとき、私はSHOW VARIABLES LIKE 'auto_inc%'これを手に入れます: 'auto_increment_increment', '2' 'auto_increment_offset', '1' だから私はauto_increment_increment1に設定してみました: SET @@auto_increment_increment=1 そして、もう一度SHOW VARIABLES LIKE 'auto_inc%'確認したところ、「動作する」という結果で確認されました。 'auto_increment_increment', '1' 'auto_increment_offset', '1' しかし、私のIDはまだ2ずつ増加しています。 最初にそれを実行したとき、それはうまくいき、それからMySQL Workbenchを閉じて、もう一度開いたときに、再び2auto_increment_incrementに設定されていることに気付きました。今、私はもう一度それをやろうとしていますが、それはもううまくいかないようです。 誰か助けてくれますか? みんなありがとう。

1
Oracle Applications DBAとOracle DBAの違いは何ですか?
すべてのOracleデータベースは、Oracle DBAがある程度の知識を持つ必要のあるタイプのアプリケーションをサポートしています。Oracle Applications DBAとこれとの違いは何ですか?この用語は、データベースではなくOracleアプリケーションをサポートするという意味ですか、それともOracleアプリケーションとデータベースの両方に対する責任を含むものですか?後者の場合、これはOracleバックエンドで実行できる他のすべてのタイプのアプリケーションとは異なる方法で行われるようです。たとえば、Oracle .NET DBAは表示されません。誰かがこのトピックに関する私の限られた理解を片付けることができますか? 更新:これまでの2つの回答からは、質問の表現が不十分だったことが非常に明確に思われます。私のコンテキストは、開発者DBAの意味でのアプリケーションDBAとプロダクションDBAではありません。「Oracle Applications DBA」または「Oracle Apps DBA」という特定の役職についてお伺いします。フレーズを検索すると、次のような結果が得られます。 http://becomeappsdba.blogspot.com/ http://appsdba.info/ http://teachmeoracle.com/interview.html など これまでに見つけた最高の説明は、http://www.club-oracle.com/articles/what-is-oracle-applications-259/からのものです。 Oracle Applicationsはエンタープライズリソースプランニングソフトウェアであり、大規模な業界が業界全体の運用を制御するために実行します。このソフトウェアには、個別のビジネスプロセスのモジュールと呼ばれる個別のセグメントが含まれます。各モジュールは基本的にフォームのコレクション(レポートを表示するいくつかのデータを含む)であり、ビジネスプロセスの各段階でデータを入力する必要があります。フォームは、データ入力とプロセスフローに対する業界のベストプラクティスの制御を実施します。
8 oracle 


2
SQLディスクセットアップのアドバイス-TempDB、ログDB、データファイルの配置に関する質問
非常にアクティブなデータベースサーバーがあり、その上でさまざまなアプリケーションが実行されています。最も忙しいのは、1日中ドキュメントスキャンとワークフロー処理を行うLaserficheデータベース(平均2800バッチリクエスト/秒)と、メールをルーティングするブラックベリーサーバーアプリです。他にも約25の小さなアプリケーションデータベースがあります。 私たちは政府機関なので、1つのDBサーバーライセンスの予算しか与えられていません。 最近、ディスク競合の問題に対処するためにSANが提供されました。 現在、TempDBは独自のディスク(RAID 1ミラーペア)で実行されており、トランザクションログとデータファイルをSANに移動しています。トランザクションログは1つの論理的な場所に配置され、データファイルは別の場所に配置されました。物理的には同じアレイですが、RAID 1 + 0構成の合計14個のスピンドル(ディスク)で構成されるアレイです。 かなり頑丈なSAN-そして物事ははるかによく実行されています。キューの長さが半分になりました。 ちょうど今日、私たちは別のオプションも与えられました。現在ファイルサーバーで必要な場合は、4つのディスクアレイを使用することもできます。MDFとLDFを2つの別々のアレイに配置することをお勧めしますが、この状況でこれを行う唯一の方法は、データログまたはトランザクションログをSANからRAID 5として構成された4ディスクアレイに移動することです。現在、別の論理ボリュームにありますが、同じ物理アレイを共有しています。 ヒップからの撮影は、MDFとLDFを14スピンドルRAID 1 + 0アレイに一緒に配置するのが、4スピンドルRAID 5アレイに配置するのと同じくらい良いと思います。しかし、ディスクロジックの専門家であるかどうかは尋ねられません。どちらのオプションも基本的に同一の15k SASディスクを使用しています。つまり、各スピンドルは基本的に同一です。 つまり、本質的には問題です。raid 1 + 0として構成された単一の14スピンドルアレイのMDF / LDFは、データまたはログを独自の4スピンドルraid 5アレイに移動することにより、大幅なマージンで(またはまったく)改善されますか? 考え? 更新された情報: また、ログボリュームの現在の平均キュー長は、ほぼ一貫して0.55前後であることに注意してください。データボリュームの平均キュー長が0.01を超えることはほとんどありません(通常は0.00) sys.dm_io_virtual_file_statsクエリ結果: <table> <tr> <td>database id</td> <td>Volume</td> <td>io_stall_read_ms</td> <td>num_of_reads</td> <td>avg_read_stall_ms</td> <td>io_stall_write_ms</td> <td>num_of_writes</td> <td>avg_write_stall_ms</td> <td>io_stalls</td> <td>total_io</td> <td>avg_io_stall_ms</td> </tr> <tr> <td>25</td> <td>h</td> <td>175086</td> <td>1411</td> <td>124</td> <td>69</td> …

4
SQL Server:カスタマイズされたデータベースロールを固定されたロールよりも優先する理由は何ですか?
これは少しあいまいかもしれませんが、データベースのセキュリティを制御する固定データベースロールを使用するDBAの量を考えていました。ですから、問題は、固定データベースロール(db_datareaderなど)よりもカスタマイズされたデータベースロールを優先する理由があるのでしょうか。

1
SQL Serverの権限について
SQL Server Management Studioで、SQL Server 2008 R2 Express Editionのインスタンスを応援しています。アクセス許可のしくみを理解しようとしています。 私が見ることができるのは(これらのエンティティの多くのプロパティを介して) サーバーログインをデータベースユーザーにリンクできます データベースユーザーは1つ以上のデータベースロールを持つことができます データベースロールの1つは、スキーマdb_datawriterを所有するdb_datawriterです。 しかし、その時点でトレイルは寒くなります。スキーマdb_datawriterのプロパティの下には、空白の権限ページがあります。 スキーマdb_datawriterの権限を正確に定義するものは何ですか?

2
PostgreSQL:他のテーブルのスキーマ名とテーブル名を使用していますか?
すべてのスキーマ名が1つのテーブルにあり、すべてのテーブル名が別のテーブルにある状況を考えてみます。 次のようなコード(疑似コード)を実行することは可能ですか? SELECT value FROM (SELECT schema_name FROM schemas).(SELECT table_name FROM tables) または、クエリを3つのSELECTに分割する必要がありますか?

2
パラメータなしのEXEC()とsp_executesqlの違いは?
新しいsp_executesqlストアドプロシージャについて学習しました。SQL Server内からパラメーター化されたコードを実行する方法があるのが気に入っています。 しかし、パラメータがない場合のsp_executesqlストアドプロシージャの使用と、直接EXECを呼び出すだけの違いは何なのかと思います。また、パフォーマンスに影響がありますか? exec('select * from line_segment') exec sp_executesql N'select * from line_segment' また、2005年と2008年の間に違いはありますか、それとも同じように扱いますか?

2
MongoDBでDENSE_RANKに相当するものを効率的に実行する方法はありますか?
SQL ServerとOracleの両方にDENSE_RANK関数があります。MapReduceに頼ることなく、MongoDBで同様のことを行う方法はありますか?つまり、次のようなT-SQL選択句があるとします。 SELECT DENSE_RANK() OVER(ORDER BY SomeField DESC) SomeRank MongoDBで同じことをする最良の方法は何ですか? (注:これは、MongoDBの質問の再投稿です。DBA からのフィードバックをもっと期待しています...)

3
手続き型クエリが絶対に必要なのはいつですか?
SQL Server内でカーソルとループをあらゆるコストで回避する傾向があることは知っていますが、手続き型クエリが絶対に必要で、セットベースのクエリでは結果が得られない状況は何ですか? 2つの違いを理解していますが、カーソルを使用する必要がある状況に至ったことがありません。そのような状況があるのだろうか。

1
InnoDBデッドロックはINSERT / UPDATE / DELETE専用ですか?
私は「ロックを取得しようとすると、デッドロックが見つかっ、トランザクションを再起動してみてください」MySQLのエラーを回避作業。 デッドロックを許可するようにプログラムを更新する必要があります。SELECTステートメントがデッドロックエラーを生成する可能性はありますか?私はそれが読み取りロックであることを知っているので、複数の選択は問題になりませんがINSERT、UPDATEまたは、DELETEステートメント(結合でサブクエリが可能)とSELECTステートメント(結合またはサブクエリで可能)がある場合はどうなりますか? それがエラーがでスローされる可能性がありますSELECT代わりにINSERT、UPDATEまたはDELETE。 好奇心旺盛な人なら、ここに物語があります。

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