データベース管理者

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

2
PostgreSQLデータベース接続の数を適切に監視するにはどうすればよいですか?
Nagiosスクリプトを使用してPostgresデータベース上のデータベース接続の数を監視しようとしたところ、この問題が発生しました。これらは現在開いている接続としてカウントされ、5分ごとに測定されます。 SELECT sum(numbackends) FROM pg_stat_database; それでも、これは多数の短期間の接続を見逃しているようで、統計は現実とはかけ離れています。 スクリプトを手動で実行してみましたが、2秒の接続が数秒離れた2つの接続の間でも大きな変化が見られました。 この情報を信頼できる方法で取得するにはどうすればよいですか?時間間隔中に発生したmax(connectios)など。

1
Azure SQLデータベースの不明な_TransactionIndexテーブル
今日気付いたのは、 "_ TransactionIndex_ {guid}"という名前のランダムなテーブルがAzure SQLデータベースにあることです。 1つの列IDがあり、8つのGUIDが含まれています。 このテーブルに関する情報が見つかりませんでした-それは何ですか?アプリケーション内のトランザクションに問題があるということですか?

2
MySQLの `performance_schema`データベースを削除しました。どのように作成できますか?
ibdata / logの問題を修正しているときに、誤ってperformance_schemaデータベースを削除してしまいました。新しいデータベースを作成したいと思います。 mysql> SHOW VARIABLES LIKE 'perf%'; +---------------------------------------------------+---------+ | Variable_name | Value | +---------------------------------------------------+---------+ | performance_schema | ON | | performance_schema_events_waits_history_long_size | 10000 | | performance_schema_events_waits_history_size | 10 | | performance_schema_max_cond_classes | 80 | | performance_schema_max_cond_instances | 1000 | | performance_schema_max_file_classes | 50 | | performance_schema_max_file_handles | 32768 | …
10 mysql 

1
550万行/ドキュメントのMongoDBパフォーマンスとPostgreSQL
誰かがこれらのクエリを比較して、PostgreSQLクエリが2000ミリ秒未満で実行され、MongoDB集計クエリがほぼ9000ミリ秒、時には130Kミリ秒もかかる理由を説明できますか? PostgreSQL 9.3.2 on x86_64-apple-darwin, compiled by i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.9.00), 64-bit PostgreSQLクエリ SELECT locomotive_id, SUM(date_trunc('second', datetime) - date_trunc('second', prevDatetime)) AS utilization_time FROM bpkdmp WHERE datetime >= '2013-7-26 00:00:00.0000' AND datetime <= '2013-7-26 23:59:59.9999' GROUP BY locomotive_id order by locomotive_id MongoDBクエリ db.bpkdmp.aggregate([ …

2
多くのタイムゾーンのデータに対してレポートするためのデータウェアハウスの設計
多くのタイムゾーンのデータに対するレポートをサポートするデータウェアハウスの設計を最適化しようとしています。たとえば、アクティビティを1日の時間でグループ化して表示する必要がある、1か月分のアクティビティ(数百万行)のレポートがあるとします。そしてもちろんその日の時間は与えられたタイムゾーンの「ローカル」時間でなければなりません。 UTCと1つの現地時間をサポートしたときにうまく機能するデザインがありました。UTCおよび現地時間の日付と時刻のディメンションの標準設計、ファクトテーブルのID。ただし、100以上のタイムゾーンのレポートをサポートする必要がある場合、そのアプローチは拡張されないようです。 ファクトテーブルは非常に広くなります。また、レポートの特定の実行でグループ化に使用する日付と時刻のIDを指定するSQLの構文の問題を解決する必要があります。おそらく非常に大きなCASEステートメントでしょうか? カバーしているUTC時間範囲ごとにすべてのデータを取得し、それをプレゼンテーションレイヤーに戻してローカルに変換してそこで集計するといういくつかの提案を見てきましたが、SSRSを使用した限られたテストでは、非常に遅くなることが示唆されています。 私はこの主題についてもいくつかの本を調べましたが、それらはすべて、UTCがあり、ディスプレイで変換するか、UTCと1つのローカルがあると言っているようです。任意の考えや提案をいただければ幸いです。 注:この質問は「データマート/倉庫でのタイムゾーンの処理」に似ていますが、その質問についてはコメントできません。 更新: Aaronが重要な更新を行い、サンプルコードと図を投稿した後、私はAaronの回答を選択しました。彼の回答に対する私の以前のコメントは、回答の元の編集を参照しているため、あまり意味がありません。必要に応じて戻ってきてこれをもう一度更新しようとします

1
IN()パラメーターを使用したPostgreSQL PREPAREクエリ
私はPHPからクエリを準備しようとしています: pg_prepare($con, "prep", "select * from test where tid in ($1)"); 次にそれを実行します: $strpar = "3,4,6,8,10"; pg_execute($con, "prep", array($strpars)); 問題は、prepareが固定数のパラメーターを想定しているため、構築された一連の値を渡すことができないことです。パラメータを動的にする方法はありますか?

3
明示的な主キーがないDB内のすべてのテーブルを見つけるにはどうすればよいですか?
Googleの検索により、クラスター化インデックスなしでテーブルを検索する方法に関する数百万のヒットが発生しました。PKは通常、テーブルのクラスター化インデックスです。ただし、テーブルには、クラスター化インデックスとしての自然キー、およびID列のような非クラスター化代理インデックスを簡単に含めることができます。 主キーが定義されていないDB内のすべてのテーブルを見つけるにはどうすればよいですか?このDBには245のテーブルがあります。手動での検査は非常に非効率的です。

1
クエリのパフォーマンスが悪い
処理するデータ量に応じて、通常0.5〜6.0秒で実行される大きな(10,000行以上)手順があります。過去1か月間で、FULLSCANで統計を更新してから30秒以上かかりました。速度が低下すると、sp_recompileは問題を「修正」し、夜間統計ジョブが再度実行されるまで待機します。 低速と高速の実行プランを比較することで、特定のテーブル/インデックスに絞り込みました。実行速度が遅い場合は、特定のインデックスから約300行が返されると推定され、実行速度が速い場合は1行と推定されます。実行速度が遅い場合はインデックスでシークを行った後にテーブルスプールを使用し、実行速度が速い場合はテーブルスプールを実行しません。 DBSS SHOW_STATISTICSを使用して、インデックスヒストグラムをExcelでグラフ化しました。私は通常、グラフがより「ローリングヒル」であると予想しますが、代わりにそれは山のように見え、最高点はグラフ上の他のほとんどの値よりも2倍から3倍高くなります。 FULLSCANなしで統計を更新すると、より正常に見えます。その後、もう一度FULLSCANで実行すると、上記のように見えます。 これは、パラメータスニッフィングの問題のように感じられ、特に上記の(一見)奇妙なインデックス分布に関連しています。 プロシージャはテーブル値パラメーターを受け取りますが、パラメーター値パラメーターでパラメーターのスニッフィングを行うことができますか? 編集:プロシージャは、他に12個のパラメーターも受け取ります。そのうちのいくつかはオプションで、そのうちの2つは開始日と終了日です。 ヒストグラムは奇妙ですか、それとも間違ったツリーを吠えていますか? クエリを調整したり、インデックスを調整したりすることは確かに快適です。それがすばらしい修正である場合、その時点での私の質問は、歪んだヒストグラムについての詳細です。 これはPK IDENTITYクラスター化インデックスであることを述べておきます。互いに通信する2つのシステムがあり、1つはレガシーシステムで、もう1つは新しい自家製システムです。どちらのシステムも同様のデータを保存します。新しいシステムのこのテーブルのPKを同期させるために、古いシステムにデータが追加されない場合でも(RESEEDが実行された場合でも)、PKが増加します。したがって、この列の番号付けにいくつかのギャップがある可能性があります。レコードが削除されることはほとんどありません。 どんな考えでも大歓迎です。より多くの情報を収集/含めることができて、とてもうれしいです。


2
スキーマのすべての権限をスクリプト化する方法
SQL管理スタジオでは、すべてのdbオブジェクトのスクリプトを作成できますが、これまでのところ、スキーマまたはユーザーを正しくスクリプト化する方法を見つけることができませんでした。スキーマに対するユーザーの権限は、作成されるスクリプトには含まれません。私は何か間違ったことをしたのでしょうか、それともMSFTは少しずさんなのですか?

3
WindowsでPostgreSQLのマイナーアップグレードを行う方法(例:9.3.0から9.3.1)
Enterprise DBビルドのWindowsインストーラーを使用して、PostgreSQLから9.3.0から9.3.1へのマイナーアップグレードを実行するための推奨される方法は何ですか?最初にアンインストールする必要がありますか、それとも既存のインストールに上書きしてインストールしますか? 現在のインストールはpostgresql-9.3.0-1-windows-x64.exeを使用して実行されました。次に、postgresql-9.3.1-1-windows-x64.exeを使用してアップグレードします。

1
pg_activityで「トランザクション分離レベルの表示」を使用して複数のクエリを取得する
PostgreSQLサーバーを運用環境で使用しています。 次のようなクエリを実行すると select * from pg_stat_activity 私のサーバーでは、次のようなクエリの98%を取得しています SHOW TRANSACTION ISOLATION LEVEL サーバーは100接続しか受け入れないため、先に進むことができません。 なんでこんなことが起こっているの?これらのクエリをすべてブロックするにはどうすればよいですか?

2
並列処理のコストしきい値をいつ変更するか
パフォーマンスの問題を調査しているときに、CXPACKETSへの流入があり、並列処理のコストしきい値と、おそらくMAXDOPを調べる必要があるかもしれないと示唆しています。 MAXDOPに大幅な変更を加える前に、SQL Server 2008のCXPACKET Waitsパフォーマンスチューンへの回答での@mrdennyの回答や、CXPACKET待機への対処からの@ aron-Bertrandの回答-コストしきい値の設定など、他の多くのアドバイスに従っています平行性について。統計情報を毎晩完全に更新するために、メンテナンスに追加しました。これは賢明な動きのように感じます。 ただし、コストのしきい値に変更を加えることはまだ私を悩ませるものです。 並列処理のコストしきい値はどの時点で変更する必要がありますか?(クエリとワークロードのコストを調べた後)このコストに変更を加えた例はありますか? これが前の質問で回答されたものである場合は謝罪します。 ありがとう!

1
80M行のインデックス付きテーブルで挿入クエリを実行するとMSG 666
奇妙なことに、私のストアード・プロシージャーは、一部の入力データについてメッセージ666を受け取り始めました。 次の構造を持つテーブルに行を挿入しようとすると、最後のステップでストアドプロシージャが失敗します。 Columns: A_Id: PK, int B_Id: PK, FK, int C_Id: PK, FK, int D_Id: PK, smallint これは基本的に、参照されるすべてのエンティティを接続するテーブルです。 Indexes: IX_TableName_D_id - Clustered index on D_id column PK_TableName - Unique non-clustered index on all columns (A_Id, B_Id, C_Id, D_Id) 両方のインデックスの断片化は低い(25%未満)。ただし、テーブルに対する操作の量が非常に多いため、PK_TableNameの断片化は急速に増大します。 テーブルサイズ: Row count: ~80,000,000 rows したがって、veeery simpleクエリを実行しようとすると、一部のD_Idに対して次のメッセージが表示されます。 メッセージ666。パーティションID 422223771074560のインデックスで、重複グループのシステム生成の一意の最大値を超えました。インデックスを削除して再作成すると、これが解決する場合があります。それ以外の場合は、別のクラスタリングキーを使用します。 クエリ例: INSERT …

1
UNPIVOTに動的に列名を渡す
次のデータを含むテーブルがあります First Second Third Fourth Fifth Sixth 2013-08-20 2013-08-21 2013-08-22 2013-08-23 2013-08-24 2013-08-25 そして使用 UNPIVOT SELECT Data ,DATENAME(DW, Data) AS DayName FROM Cal UNPIVOT(Data FOR D IN ( First, Second, Third, Fourth, Fifth, Sixth )) AS unpvt 次の結果が得られます Data DayName 2013-08-20 Tuesday 2013-08-21 Wednesday 2013-08-22 Thursday 2013-08-23 Friday 2013-08-24 Saturday …

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