データベース管理者

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

8
LIKE、SIMILAR TO、またはPostgreSQLの正規表現を使用したパターンマッチング
BまたはDで始まる人の名前を探す単純なクエリを作成する必要がありました。 SELECT s.name FROM spelers s WHERE s.name LIKE 'B%' OR s.name LIKE 'D%' ORDER BY 1 パフォーマンスを向上させるためにこれを書き換える方法があるかどうか疑問に思っていました。だから私は避けることができますor/またはlike?

3
PostgreSQLの複数列の一意制約とNULL値
次のような表があります。 create table my_table ( id int8 not null, id_A int8 not null, id_B int8 not null, id_C int8 null, constraint pk_my_table primary key (id), constraint u_constrainte unique (id_A, id_B, id_C) ); そして、私(id_A, id_B, id_C)はどんな状況でも明確になりたいです。したがって、次の2つの挿入はエラーになる必要があります。 INSERT INTO my_table VALUES (1, 1, 2, NULL); INSERT INTO my_table VALUES (2, 1, 2, …

3
mysql-binファイルを削除しても安全ですか?
私はこれらに出くわした、私は、MySQLでMMレプリケーションを持っている、と私は、不要なファイルを削除するボックスに空き領域を圧迫したいmysql-bin内のファイル/var/db/mysql/のように、それらのファイルの何百ものがありますがmysql-bin.000123、mysql-bin.000223私は実行してMySQLのレプリケーションを確認しているなどshow master statusとshow slave status彼らは特定の位置でいくつかのmysql-binファイルを使用しますが、他のすべてのbinファイルは、今後使用されない残り物であると思います。この場合、レプリケーションが現在指しているファイル以外のすべてのmysql-binファイルを削除しても安全ですか? 削除しても安全な場合、使用されていないファイルを自動的に削除するためにできることはありますか?

19
テーブル名に「tbl」プレフィックスを追加することは本当に問題ですか?
私はいくつかのブレント・オザールのビデオを見ています(例えば、このような)、彼はテーブルの前に‘tbl’またはを付けないことを提案してい‘TBL’ます。 インターネット上で、ドキュメントに何も追加されず、「読むのに時間がかかる」というブログを見つけました。 質問と考慮事項 これは本当に問題ですか?なぜなら、最初のdbaジョブ以来、テーブルの前に 'tbl'を付けているからです(シニアDBAから組織のためにそれを行うように言われました)。 これは私が取り除く必要があるものですか?いくつかのテストを行い、非常に大きなテーブルをコピーして「tbl」プレフィックスを付け、もう一方のテーブルはそのままにして、パフォーマンスの問題に気付きませんでした。

15
データベース管理がそれほど難しいのはなぜですか?
私は多くのデータベース管理者を知っており、彼らはすべて28〜29歳以上です。 すべてのデータベース管理はそのようなものですか?つまり、これは少なくとも7〜8年以上経験を積むということですか? または、データベース管理者になるのは難しいですか?

5
INTでTINYINTを使用する場合
一般に、私は常にIntsを使用します。ただし、データの保存が保証される最小のデータ型を使用する必要があるため、理論的にはこれがベストプラクティスではないことを知っています。 たとえば、tinyint保存するデータが1、0、またはnullのみであることがわかっている場合に使用することをお勧めします(2または3に拡張する可能性は非常に小さい)。 ただし、これを行うために知っている唯一の理由は、4バイトの代わりに1バイトを使用して、ストレージの目的のためです。 使用しての影響は何ですかtinyint(またはsmallintあるいはbigint単に上)intハードドライブの容量を節約する以外は、?

2
PostgreSQLから現在のUNIXタイムスタンプを取得するにはどうすればよいですか?
Unixタイムスタンプは、UTC 1970年1月1日午前0時からの秒数です。 PostgreSQLから正しいUNIXタイムスタンプを取得するにはどうすればよいですか? currenttimestamp.comおよびtimestamp.1e5b.deと比較すると、PostgreSQLから予想される時間を取得できません。 これは正しいタイムスタンプを返します: SELECT extract(epoch from now()); これはしませんが: SELECT extract(epoch from now() at time zone 'utc'); 私はUTC +02のタイムゾーンに住んでいます。PostgreSQLから現在のUNIXタイムスタンプを取得する正しい方法は何ですか? これは正しい時間とタイムゾーンを返します: SELECT now(); now ------------------------------- 2011-05-18 10:34:10.820464+02 別の比較: select now(), extract(epoch from now()), extract(epoch from now() at time zone 'utc'); now | date_part | date_part -------------------------------+------------------+------------------ 2011-05-18 10:38:16.439332+02 | 1305707896.43933 …

5
NoDBのようにRDBMのクラスターができないのはなぜですか?
nosql DBMSの大きな利点の1つは、より簡単にクラスタリングできることです。NoSQLを使用すると、さまざまなデータを格納する数百台の安価なマシンを作成して、一度にクエリを実行できます。 私の質問はこれです、なぜリレーショナルDBMSはmysqlやsqlサーバーのようにこれを行うことができないのですか?ベンダーが既存の製品でこれを行うための技術的な方法を理解していないだけなのか、それとも実現できないようにするリレーショナルモデルの問題がありますか?データ(キー/値、ドキュメントなど)を保存およびアクセスするNoSQLの方法で、これが本当に正しい場合、クラスタリングを容易にするのは何が素晴らしいですか?

3
常にトランザクションを作成することは悪い習慣ですか?
常にトランザクションを作成することは悪い習慣ですか? たとえば、1つだけのトランザクションを作成することをお勧めしSELECTますか? トランザクションが本当に必要でない場合、トランザクションを作成するコストはいくらですか? のような分離レベルを使用している場合でも、READ UNCOMMITTEDそれは悪い習慣ですか?

6
グループごとにn行を取得する
結果セットの各グループから多くの行を選択する必要がよくあります。 たとえば、顧客ごとに最近の注文値の最高または最低を「n」個リストしたい場合があります。 より複雑な場合、リストする行の数はグループごとに異なる場合があります(グループ化/親レコードの属性によって定義されます)。この部分は間違いなくオプション/追加のクレジットのためであり、人々が答えることを思いとどまらせることを意図していません。 SQL Server 2005以降でこれらのタイプの問題を解決するための主なオプションは何ですか?各方法の主な長所と短所は何ですか? AdventureWorksの例(わかりやすくするため、オプション) TransactionHistoryMからRまでの文字で始まる製品ごとに、テーブルから最新の5つのトランザクション日付とIDをリストします。 繰り返しますが、n製品ごとに履歴行がnあり、DaysToManufacture製品属性の5倍です。 同様に、製品ごとに正確に1行の履歴行が必要な特別な場合(TransactionDate、タイブレークでの最新の単一エントリ)TransactionID。


3
複合インデックスは、最初のフィールドのクエリにも適していますか?
フィールドAとを持つテーブルがあるとしましょうB。A+ Bで定期的にクエリを作成するため、で複合インデックスを作成しました(A,B)。クエリAも複合インデックスによって完全に最適化されますか? さらに、にインデックスを作成しましたAが、Postgresはでのみクエリに複合インデックスを使用していAます。前の答えが正の場合、それは実際には重要ではないと思いますが、単一のAインデックスが利用可能な場合、デフォルトで複合インデックスを選択するのはなぜですか?


6
ストアドプロシージャはSQLインジェクションを防ぎますか?
ストアドプロシージャがPostgreSQLデータベースに対するSQLインジェクション攻撃を防ぐのは本当ですか?少し調べてみると、ストアドプロシージャのみを使用していても、SQL Server、Oracle、MySQLはSQLインジェクションに対して安全ではないことがわかりました。ただし、この問題はPostgreSQLには存在しません。 PostgreSQLコアのストアドプロシージャの実装は、SQLインジェクション攻撃を防ぎますか?または、ストアドプロシージャのみを使用する場合でも、PostgreSQLはSQLインジェクションの影響を受けますか?もしそうなら、例を示してください(本、サイト、論文など)。

4
PostgreSQLテーブルの行のサイズを測定する
PostgreSQLテーブルがあります。素晴らしくて速いのselect *に対し、非常に遅いselect idです。行のサイズが非常に大きく、転送に時間がかかっているか、または他の要因である可能性があります。 すべてのフィールド(またはほとんどすべてのフィールド)が必要なので、サブセットを選択するだけでは簡単に修正できません。必要なフィールドの選択がまだ遅いです。 以下に、テーブルスキーマから名前を除いたものを示します。 integer | not null default nextval('core_page_id_seq'::regclass) character varying(255) | not null character varying(64) | not null text | default '{}'::text character varying(255) | integer | not null default 0 text | default '{}'::text text | timestamp with time zone | integer | timestamp with time …

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