データベース管理者

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

2
MySQLおよびウィンドウ関数
MySQLウィンドウ関数をサポートしていないようです。 たとえば、シンプル:COUNT(*) OVER() AS cnt動作しません。 これが商用バージョンにも当てはまるかどうかはわかりません(コミュニティバージョンは限定的なサブセットであると想定しています)。 そうでない場合、この欠落機能をどのように回避しますか?

3
書き込みパフォーマンスのためのPostgreSQLの構成
PostgreSQLサーバーの1つは、一定のデータストリームを受信する複数の(1〜3)データベースをホストしています。データは特に構造化されておらず、現在の時刻とその特定の瞬間のさまざまな観測データになります。データレートはかなり高いです。あるデータベースでは1日に約1ギガバイト、別のデータベースでは約10分の1になります。この率が上がるとは思わない。読み取りパフォーマンスは、はるかに低い優先度であり、現在許容されています。 ログにこのメッセージがあります: LOG: checkpoints are occurring too frequently (15 seconds apart) HINT: Consider increasing the configuration parameter "checkpoint_segments". 現在、この値は16に設定されていpgtuneます。 書き込みパフォーマンスを改善するために考慮すべき設定は何ですか?私は可能な限り安全に保つことを好むでしょう。入ってくるデータの量を考えると、データの大部分が無傷である限り、障害で最近のデータを失うことを受け入れることができます。 編集:今のところPostgreSQL 9.0を使用していますが、9.1にアップグレードする予定です。ハードウェアの詳細は掲載していませんが、その重要性は認識していますが、最終的には非常に多様なハードウェアを持つ複数のマシンでこの最適化を行う必要があります。ハードウェアが答えに不可欠な場合は、一般的な情報を教えてください。異なるハードウェア構成のマシンに答えを適用できます。

5
正規化はどこまで行けばいいですか?
データベースにはかなりの量のデータがあります。整形式のテーブルと、データ間の冗長性を備えたテーブル間の良好な関係があります。しかし、正規化はどこまで行えばよいのでしょうか?正規化が多すぎるとパフォーマンス上の欠点がありますか?

2
SQL Server DBAからOracleに移行する方法は?
関心として、SQL Server DBAからOracleに移行する場合、私がしなければならない主要な学習または非学習は何ですか? 概念は同じで、違いはプログラミング言語だけであると思いますが、ドアの向こう側を見たことはありません。

5
ルックアップテーブルの主キーとしてintを使用する理由
ルックアップ値を主キー(ほとんどの場合は文字列)として使用するのではなく、なぜルックアップテーブルの主キーとしてintを使用する必要があるのか​​を知りたい。 intではなくnvarchar(50)を使用すると、多くのレコードを持つテーブルにリンクされている場合、より多くのスペースが使用されることを理解しています。 一方、ルックアップ値を直接使用すると、基本的に結合を行う必要がなくなります。参加が常に必要な場合、これは大きな節約になると想像できます(Webアプリで作業しているので、これはかなり重要です)。 int主キー(特にルックアップテーブル用)を使用することの利点は、「行うべき標準的なこと」以外に何ですか?

8
IntelliSenseは機能していませんが、有効になっています
この問題は本当にトリッキーな問題であることが証明されています(非常に迷惑です)。 SQL Server Management Studio 2008では、数日前まで、私のIntelliSenseはうまく機能していました。その後、突然停止しました。ツールバーメニューで有効になっているアイコンと、[ツール]-> [オプション]-> [テキストエディター]-> [T-SQL]-> [IntelliSense]で、有効になっていると表示されます。 IntelliSenseキャッシュをCtrl-Shft-Rで書き換えようとしましたが、それも機能しません。 IntelliSenseに何が起こったのか、それを取り戻すために何をする必要があるのか​​という考えはありますか?

3
クエリを高速化するために列を複製しますか?
タイトルはあまり意味がありませんが、この問題に対してより良いタイトルを考えることはできませんでした。 私は次の表を持っています プロジェクト id 名 お客さま id id_project 名 お支払い id id_customer 日付 和 ユーザーがシステムに入ると、特定のプロジェクトにアクセスできます。今、私はそのプロジェクトのすべての支払いをリストしたいと思います、そしてそれはかなり簡単なはずです: SELECT FROM payments where id_customer in (SELECT id from customers where id_project = 5) 私の質問は次のとおりです。この方法でid_project列を支払いテーブルに追加する方が良くない場合、クエリは簡単で高速になります。

3
文字対整数の主キー
メインエンティティの可能な属性を含む複数のルックアップテーブルを持つデータベースを設計しています。これらの属性IDをメインテーブルに格納するときに、単なる乱数ではなく意味のある値が表示されるように、自動インクリメント整数ではなく、4または5文字のキーを使用してこれらのルックアップ値を識別することを考えています。 文字フィールドを整数ではなく主キーとして使用すると、パフォーマンスにどのような影響がありますか? それが重要な場合は、MySQLを使用しています。 [編集] これらのルックアップテーブルには、まれに新しいレコードが追加されます。それらは手動で保守され、文字ベースのキーも手動で作成されます。以下に例を示します。 CUISINES ID Description ----- -------------- CHNSE Chinese ITALN Italian MXICN Mexican

7
人口統計に基づいた信頼できる患者マッチングのために推奨される最小マッチング基準は何ですか?
人口統計データに基づいて患者を照合する場合、患者が「同じ患者」になるためにどのフィールドを照合すべきかについての推奨事項はありますか? 実装によってアルゴリズムが異なることはわかっていますが、このプロセスに関するベストプラクティスや推奨事項があるかどうかは知りたいです。 First Name Last Name Date of Birth SSN Address City State Zip 等?
30 identity 

10
データベースの列にラベルを付ける効果的な方法は何ですか?
データベースの列に次のようにラベルを付けていました。 user_id user_name user_password_hash 2つのテーブルを結合する際の競合を避けるために、テーブルをエイリアスする方法についてさらに学んだので、これをやめました。 データベースの列にラベルを付ける効果的な方法は何ですか?どうして?

2
大規模なINを使用したPostgresクエリの最適化
このクエリは、フォローしている人が作成した投稿のリストを取得します。フォローできる人の数に制限はありませんが、ほとんどの人は1000人未満をフォローしています。 このスタイルのクエリでは、明らかな最適化は"Post"ID をキャッシュすることですが、残念ながら今のところその時間はありません。 EXPLAIN ANALYZE SELECT "Post"."id", "Post"."actionId", "Post"."commentCount", ... FROM "Posts" AS "Post" INNER JOIN "Users" AS "user" ON "Post"."userId" = "user"."id" LEFT OUTER JOIN "ActivityLogs" AS "activityLog" ON "Post"."activityLogId" = "activityLog"."id" LEFT OUTER JOIN "WeightLogs" AS "weightLog" ON "Post"."weightLogId" = "weightLog"."id" LEFT OUTER JOIN "Workouts" AS "workout" ON …

3
インデックスREBUILDがインデックスの断片化を軽減しないのはなぜですか?
ALTER INDEX REBUILDを使用して、インデックスの断片化を削除しました。場合によっては、REBUILDはこのフラグメンテーションを削除しないようです。REBUILDがフラグメンテーションを削除しない理由は何ですか?これは特に小さなインデックスで発生するようです。

4
データベースの競合状態をどのようにテストしますか?
データベースコードを記述して、競合状態にならないようにし、正しい行またはテーブルをロックしたことを確認します。しかし、私はしばしば疑問に思う:私のコードは正しいですか?既存の競合状態を明示的に強制することは可能ですか?実稼働環境でそれらが発生した場合、私のアプリケーションが正しいことを行うことを確認したいと思います。 私は通常、どの同時クエリが問題を引き起こす可能性があるかを正確に知っていますが、正しい動作が発生するかどうかを確認するためにそれらを同時に実行する方法を知りません(たとえば、正しいタイプのロックを使用しました)投げられるなど 注:私はPostgreSQLとPerlを使用しているため、これに一般的に答えることができない場合は、おそらくそのようにタグ付けし直す必要があります。 更新:ソリューションがプログラマティックである場合、それを好むでしょう。そうすれば、自動化されたテストを作成して、回帰がないことを確認できます。

4
SQL Server 2012からSQL Server 2005にデータベースを移動する方法
データベースをSQL Server 2012(32ビット)からSQL Server 2005(64ビット)に移動する必要がある場合のオプションは何ですか? 私はできないことを知っています: SQL Server 2005でデータベースのバックアップを復元する 取り外して取り付ける 自分ができるということがわかっている: データのインポートウィザードを使用し、1つのデータベースで試してみましたが、データを移動するだけでした。さらに、ID列を維持するための一時テーブルの作成、すべてのFK、インデックスなどの再作成に多くの作業を行う必要があったため、面倒でした もっと簡単なオプションはありますか?


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