データベース管理者

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

4
単純なSQLクエリが完了しない[終了]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 4年前休業。 質問の具体的な作り方はまだよくわからないのでよくわかりませんが、見過ごさないようになっているので、早めに質問したいと思います。 今週、データベースサーバーに問題が発生しました。これはデータの一貫性の問題のようであり、非常に単純なクエリや小さなテーブルでもタイムアウトによって明らかになります。今週初めにサーバーを再起動することで問題を「修正」し、サーバーはなくなりましたが、今では、より重要なテーブルでサーバーが戻ってきているようです。たとえば、私はいくつかの調査を行っただけで、次のようなクエリを見ています。 SELECT * FROM table WHERE id = 1234 特定のID。テーブルには約3,000万行以上あります。しかし、それはレコードのごく一部でのみ発生するようです。私はサーバーを再起動するか、別のサーバーにデータベースをバックアップおよび復元するときに、それはすべてうまくいくに違いない。でもやってみます。 この時点で、私は実行しています: DBCC CHECKTABLE ('table', NOINDEX) しかし、それは永遠に実行されるようです。初めて問題にぶつかったとき、問題のあるテーブルをチェックしたところ、問題はありませんでした。この新しいテーブルははるかに大きくなっています。 いくつかの背景技術情報: SQL Server 2008 R2、Windows Server 2008 R2 AWS / EC2、m2.2xlarge、32 GB RAM、4 x 1TB RAID 0 ほとんどディスクIOはありません。ほとんどのデータベースはメモリ内にあるようです 合計DBサイズ:100GB ELBボリュームは「新品」です。今週作成しました。 編集:私は次のコマンドを使用しました: SELECT sqltext.TEXT, req.session_id, req.blocking_session_id, req.wait_type, req.wait_time, req.last_wait_type, req.wait_resource, req.open_transaction_count, …

2
MongoDBで動的属性にインデックスを付ける方法
MongoDBに次の種類のデータ(実際のケースから少し簡略化)があります。 { "name":"some name", "attrs":[ {"n":"subject","v":"Some subject"}, {"n":"description","v":"Some great description"}, {"n":"comments","v":"Comments are here!"}, ] } attrs配列は動的属性のコンテナーです。つまり、どのような属性がそこに配置されるのかは、事前にわかりません。nは名前を表し、vは値を表します。 MongoDB In Actionブックでは、属性が完全に予測可能である場合に動的属性を持つためのソリューションとしてこれを説明しています。また、次のようにインデックスを作成できることも説明しています。 db.mycollection.ensureIndex({"attrs.n":1, "attrs.v":1}) クエリは次のように実行できます。 db.mycollection.find({attrs: {$elemMatch: {n: "subject", v: "Some subject"}}}) これをテストすると、パフォーマンスが非常に低下します。200万のドキュメントがあり、インデックスがないmycollectionでテストしたところ、パフォーマンスが向上したようです。 それで、問題は、このような動的属性設定にインデックスを付けて、良いパフォーマンスが得られるようにする方法があるのでしょうか?私の場合、「件名」や「説明」などのキーを用意してすべてにインデックスを付けることはできません...
8 index  mongodb 

2
レポート目的でデータベーススナップショットを使用する利点
レポート目的でデータベースのスナップショットを使用することのパフォーマンス上の利点は何ですか? 私の見たところ、元のデータベースへの書き込みごとに、スナップショット自体に別の書き込みを行う必要があるため、おそらくパフォーマンスが低下します。 その時点までのデータのレポートを作成したいときはいつでもスナップショットを使用することがわかりますが、それはパフォーマンスのカテゴリに分類されません。 繰り返しますが、パフォーマンス上の利点はありますか?

4
SQL Serverのロックと同時実行性を理解するためのリソース
地雷のロックと同時実行性に関する最近の質問で実証されているように、ハードです。 中級から上級のSQL専門家がこれらについて徹底的に調査し、適切に学習することで、この領域に固有のすべての落とし穴をうまくナビゲートできるようにするための優れたリソースを提案できますか? チュートリアル、ブログ、マニュアルページ、PASSセッションなど、あらゆる種類のリソースを考えています。

2
一意の列に値が存在するかどうかをチェックすることの長所と短所、または挿入時にdbに一意のエラーを発生させる
先日クエリを書いていると、思いが浮かんできてしまいました。 最初に一意の列の値が存在するかどうかを確認し、次に挿入するか挿入して、dbに一意の制約エラーを発生させますか?それは重要ですか? 編集:この問題はデータベースに依存するという回答で以下に示すように、タグpostgresqlを追加しています。

1
MySQLはテーブルごとに読み取り/書き込み
DBを最適化しています。本質的に私は私たちのデータベースで最も多く書かれ最も多く読まれたテーブルを見つけようとしています。その後、それらのテーブルを個別のドライブにシンボリックリンクします。 各テーブルのアクティビティを追跡する方法はありますか?以下のように、IOPS、テーブルごとの書き込み、読み取り?

2
SQL ServerにはDate_Format関数がありますか?
私が見つけたすべては、このDateFormatように、私が選択できる事前定義のリストです MySQL(およびPostgeSQLでも?)で覚えているように、日付形式を定義できます。 DATE_FORMAT(now(),'&m_%Y') --for 02_2012 etc. SQL Serverには同じ機能がありますか?そのようなことをするために人々は関数を書かなければならないのを見ます、それは組み込みのものを持っていますか? 編集: DatePart関数を見つけました。月を数値としてとることができますが、使用しても常に1桁を返します datePart(MM, getdate())

3
ORA-04031:共有メモリのバイトを割り当てることができません( ""、 ""、 ""、 "")
開発データベースでこのエラーを受け取っています。一部の特定のクエリで発生します(.NETアプリケーションを介した単純な挿入と削除)。データベースは1人のユーザーが使用しており、データベースの実行時間に関係なくエラーが発生します。 設定される唯一のメモリ関連のパラメータは次のとおりです:MEMORY_TARGET = 1.2G Oracle 11.2 x64 Standard Edition One Windows Server 2008 R2

2
単位と複雑な単位変換に適した関係構造は何ですか?
私の会社はエネルギー業界に属しており、測定単位の変換を表す良い方法を考え出す必要があります。私はいくつかの検索を行ったが、必要な深さでこれをカバーする良い記事をまだ見つけていない。ユニット変換について公開されているほとんどの情報は、ユニット1が与えられた場合、ユニット2に到達するための既知の(ハードコードされた)変換率があり、それが単純な計算であることを前提としています(これは私が見つけた中で最も複雑な例で、まだ役に立ちません)。ただし、これは現実の世界では常に当てはまるわけではなく、処理しなければならないことについても当てはまりません。(長い記事で申し訳ありません-私はできるだけ多くの情報を提供しようとしています!) トリッキーな例1: $ 5をユーロに、またはその逆に変換するなど、一部の変換は時間とともに変化します。これはエネルギーとは何の関係もないように聞こえますが、実際にはエネルギー商品市場(株式市場を考えてください)に関係しています。 トリッキーな例2:( 過度に簡略化された)一部の天然ガスは他のものよりも熱く燃えます。さらに、天然ガスは、ガスのエネルギー(Thermsなど)またはガスの体積(MCFなどの1000立方フィート)に基づいて測定/保存でき、その他の可能性(たとえばトンのためのミサ)。ガソリンの類推は、87オクタン無鉛の1ガロンが、93オクタン無鉛の1ガロンよりも少ないエネルギーを提供することです。 トリッキーな例3: これらの測定単位があることに加えて、サームあたりの$またはMCFあたりの€などのレートも処理する必要があります。これらのレートで動作するようにいくつかの方法が必要で、どのように彼らは我々がから変換する必要がある場合に、ベースユニットに関連する我々はそうサームあたり$にMCFあたり€、我々はできるし、それからの変換と同じ公表レートを利用しサームにMCF。 トリッキーな例4: 以前は、「エネルギー」という用語を非常に緩く使用し、場合によっては誤って使用したことがあります。この時点で、そしてこれからは、状況が変わります。したがって、最後のカーブボールは、エネルギーとパワーの両方を扱うことです。電気の場合、これはkWH対kWを意味します(Yahoo Answersであるにもかかわらず、かなり良い説明です)。データの類推:ダウンロードしたデータの合計MBとMbpsを比較するようなものですISPが提供する帯域幅。データと同様に、エネルギーの供給には時間がかかります。データの類推を続けると、ある期間にわたって消費された平均有効帯域幅を計算する必要がある場合があるため、60MBが1分間にダウンロードされた場合、「有効」レートは60 * 8/60 = 8Mbpsになります。ここでの「トリック」は、Mbpsをユニットとして保存する場合、時間コンポーネントも含みますが、MBに直接関連付ける何らかの方法が必要であることです。幸いなことに、エネルギーから電力(またはその逆)への変換は、私たちが行う必要があるかなりまれなことです。そのため、私たちのソリューションは、他のすべてのトリッキーな例に合わせて最適化し、うまくいけば、この例も可能にする必要がありますが、関連する処理は行いません。エネルギー電源へのオプションです。 トリッキー例5: これは基本的に3 + 4である我々は両方持っているかもしれKWあたり$だけでなく、キロワット時あたりの$を、その速度は、両方を扱うパワーとエネルギー。 簡単な例: 一部の変換は非常に簡単で、これらはWeb上のほとんどの情報が処理できる変換です。1000 Wh = 1kWhなど。サームとデサームまたはkWからMWなどでも同じことが言えます。ここでは手助けは必要ありませんが、変換の約70%がこのタイプになることに注意してください。 開始方法についての私の考えですが、終了方法については不明です: これは明らかに非常に厄介なので、各商品と「使用タイプ」のすべてのデータを格納するために標準測定単位を選択することを提案します。したがって、電気の場合、標準のエネルギー単位はkWH、標準の電力単位はkWになります。したがって、他のエネルギー/電力単位に変換するには、すべての可能な組み合わせではなく、標準との間の変換率のみが必要です。MWからWに変換する必要がある場合は、kWへの変換またはkWからの変換によっていつでも実行できます。 変換率は特定の時間に依存する可能性があるため、この時間を測定に関連して保存できるようにする必要があります。これらのコンバージョン率が1時間に1回以上変化することを心配する必要はなく、1日1回と想定することもできると思います。 変換率は公開された値に依存する可能性があるため、この値を測定に関連して保存できるようにする必要があります。これらのコンバージョン率が1時間に1回以上変化することを心配する必要はなく、1日1回と想定することもできると思います。 これがすべて理解できたら、すべての単位変換を処理する以外に何もしないWebサービスを作成することを期待しています。私はこれらの変換を実行するSQLを探していません。それを作成するためにいくつかの創造的なキャッシュを行うことができるので、これらのテーブルを完全にハンマー処理するわけではありませんが、ユーザーがアクセスするWebサイトでページの読み込みあたり〜400の値の変換を処理する必要がある場合があります。これが重要かどうか、どのように重要かはわかりません。 変わらないコンバージョン率と変わらないコンバージョン率をどのレベルで保存すればよいかわからず、簡単に簡単にアクセスできる方法で正確にキーオフする方法もわかりませんと連携。 これに取り組む方法、または役立つ可能性のあるいくつかの公開されたリーディングマテリアルに取り組む方法についての考えは?私はSQL Serverを使用しています(間もなくSQL Azureになります)が、これは特に問題にはなりません。これを適切に表すためのスキーマが、ここで問題になっています。インチとセンチメートルのように単純なものであれば、簡単です。しかし、ここでは変換率の違いが問題です。

3
スケールアウトのためのレプリケーションの使用
「スケールアウトのためのレプリケーションの使用」を読んだ後、さまざまなクエリをさまざまなサーバーにルーティングする方法を教えてください。たとえば、SELECTスレーブとNON-SELECTマスターにルーティングする必要があります。私はロードバランサーとしてhaproxyを使用できると思いますが、haproxyのレベルでクエリを区別することはできないと思いましたか?さらに、誰かがマスターに直接到達したとします。マスターがこれがSELECTクエリであることを識別し、スレーブまたはロードバランサーに送信されるように表示するにはどうすればよいでしょうか。

3
SQL Server-複数の累計
トランザクションを含むベーステーブルがあり、累計を含むテーブルを作成する必要があります。それらはアカウントごとである必要があり、さらに各トランザクションのいくつかの実行合計が(トランザクションタイプによって異なります)あり、その中にサブアカウントごとのいくつかの実行合計があります。 私のベーステーブルには次のフィールドがあります(多かれ少なかれ)。 AccountID | SubAccountID | TransactionType | TransactionAmount Account / TransactionTypeごとに約4種類の実行合計があり、Account / SubAccount / TransactionTypeごとに実行合計が2つあり、それぞれ約10のサブアカウントを持つ約200万のアカウントがあり、約10Kのトランザクションを取得している毎分(最大負荷時)、どのように実行しますか? これがSQLジョブを介して非同期で実行され、トランザクション自体の一部ではなく集計を作成することも必須です。 私はここでカーソルを使用してかなり立ち往生しています-時間がかかりすぎます。私は多かれ少なかれ同じことをしているアドバイス/記事に本当に感謝します。

4
別のSQLインスタンスにアクセスするストアドプロシージャの実行
この質問が既に尋ねられた別の質問が繰り返される場合、私は謝罪します。私は何時間も検索しましたが、自分の状況に合うものを見つけていません。 望ましい結果 SQL認証を使用するユーザーは、Server1(デフォルトのインスタンス)上のDatabase1に対する実行権限を持っています。ユーザーは、プロセスの一部として、Server1 \ Instance2上のデータベース2にアクセスするストアドプロシージャを実行します。安全でシンプルなものにしたいと思います(どちらも重要です)。 より詳しい情報 私のWindows資格情報は、(同じサーバー上にある)両方のインスタンスにアクセスできます。したがって、ログインの下で問題なくストアドプロシージャを実行できます。ただし、ユーザーに自分のアクセスレベルを付与したくありません。ユーザーがドメインにいないため、SQLログインも使用する必要があります。 ストアドプロシージャに、そのプロシージャだけのアクセスレベルを与えたいと思います。私はシステム管理者なので、その手順に必要なすべてをユーザーに提供します。それが機能するようになったら、おそらく私の目的ではなく、その目的のためだけにアカウントを作成しますが、ストアドプロシージャの動作を制御するので、どちらにしても安全です。 "WITH EXECUTE AS"ステートメントをストアドプロシージャに入れてみましたが、Windowsログイン情報を取得できませんでした。私がそれを入れると、ストアドプロシージャをコンパイルすると次のエラーが発生します: ユーザー 'domain \ jdoe'は、存在しないか、権限がないため、実行できません。 私が言ったように、ユーザーは両方のサーバーのsysadminなので、それ以上何が必要かわかりません。 私は以下を調べました: 信頼できる-データベースを公開しないほうがいい リンクサーバー-追加のアクセス許可を与えたくありません。他のデータベースが自分のデータベースにアクセスすることを信頼していません。また、自分のデータベースが他のすべてのデータベースにアクセスすることを信頼していません。 証明書-これは複雑で難しいようです。これを実行し、維持するための非常に簡単な方法を見つけられない限り、問題の価値があるかどうかはわかりません。 所有権の連鎖-繰り返しますが、怖いです。私の目標がセキュリティ問題を防ぐことであるとき、これはより多くのセキュリティ問題を引き起こすようです。 ミラー化されたユーザー-他のサーバーインスタンスに同じ(明らかに異なるSID)ユーザーを作成し、同じパスワードを与えました。立ち入り禁止。 私は明白な何かを見逃しているように感じますが、それが何かはわかりません。一日中壁に頭をぶつけてきたので、近すぎて見られないだろう。ここで誰かが私に手を差し伸べるか、私を正しい方向に向けてくれれば幸いです。私は多くのMSDN記事を読んだと言います(男の子は嫌いですか?私が知りたいことを教えてくれないようです)。私が本当に欲しいのは、これを行う方法を順を追って説明するシンプルで簡単なチュートリアルです。それ以外に、私が進むべき方向の一般的な表示でさえ役立つでしょう。

1
Stack OverflowはSQL Server Web Editionで実行できますか?
多数のユーザーに対応する必要がある新しいWebベンチャーを始めています。 SQL Server WebエディションのSPLAライセンスには自信がありますが、Standard、Enterprise、またはDataCenterへのアップグレードを考慮に入れる必要があるかどうかを知りたいです(これは間違いなくこれになります)。 必要になる前にスケーリングについて考えるべきではないことはわかっていますが、これはサイトのアーキテクチャとビジネスプランに影響します。 プロセッサーの制限はスレッドではなく物理プロセッサーごとであることを知っているので、心配はいりません。ただし、ミラーリング機能とバックアップ機能の一部が心配になります。SOはこれらの機能に依存していますか? tl; dr: Stack OverflowのようなサイトはSQL Server Webで実行できますか?メンテナンスと高可用性のどの側面を達成することは不可能でしょうか?

1
MySQLでのデータベースサイズとディスク上の実際のサイズの大きな違い
MySQLでデータベースのサイズを確認すると、次のようになります。 MariaDB [(none)]> SELECT table_schema "Data Base Name", sum( data_length + index_length ) / 1024 / 1024 "Data Base Size in MB", sum( data_free )/ 1024 / 1024 "Free Space in MB" FROM information_schema.TABLES GROUP BY table_schema; +--------------------+----------------------+------------------+ | Data Base Name | Data Base Size in MB | Free …
8 ubuntu  mysql  mariadb 

4
リンクサーバー全体のリモートクエリに関するSQLパフォーマンスの問題
このsproc create proc dbo.Get_Accounts as begin declare @current_date datetime set @current_date = dbo.fn_currdate() select [fields] into dbo.current_accounts from linkedserver.database.dbo.accounts where date = @current_date end 10分後に継続的に失敗し、次のエラーメッセージが表示されます。 サーバー:メッセージ7399、レベル16、状態1、行1 OLE DBプロバイダー 'SQLOLEDB'がエラーを報告しました。リソース制限に達したため、プロバイダーによって実行が終了しました。[OLE / DBプロバイダーがメッセージを返しました:タイムアウト期限切れ] OLE DBエラートレース[OLE / DBプロバイダー 'SQLOLEDB' ICommandText :: Executeが0x80040e31を返しました:リソース制限に達したため、プロバイダーによって実行が終了しました。 ただし、日付がハードコードされた対話型クエリウィンドウで、同じデータベース(リモートデータベースではない)から同じクエリを実行すると、次のようになります。 select [fields] into dbo.current_accounts from linkedserver.database.dbo.accounts where date = '1/20/2012' …

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