データベース管理者

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

3
合理的なバッファプールサイズを評価する決定論的な方法は何ですか?
私はmax server memory (mb)設定が適切かどうかを理解するための健全な方法を考え出そうとしています(どちらか低いか高いか、そのままの状態を維持する必要があります)。max server memory (mb)オペレーティングシステムなどのためのスペースを確保するために、常に十分に低くする必要があることを認識しています 私が見ている環境には数百のサーバーがあります。RAMは各サーバーに割り当てられたGBごとにコストがかかるため、バッファープールの現在のサイズが適切かどうかを判断するために使用できる信頼できる式が必要です。環境全体が仮想化され、VMに割り当てられた「物理」RAMは簡単に上下に変更できます。 現在見ている特定のSQL Serverインスタンスには、1,100,052秒のPLEがあります。これは、12.7日(サーバーが稼働している時間)に相当します。サーバーの最大サーバーメモリ設定は2560MB(2.5GB)で、そのうち1380MB(1.3GB)のみが実際にコミットされます。 Jonathan Keheyias(投稿)によるものとPaul Randal(投稿)によるもの、および他のいくつかを含むいくつかの項目を読みました。ジョナサンは、4GBのバッファプールあたり 300未満のPLEの監視が低すぎると主張しています。上記のSQL Serverインスタンス300 * (2.5 / 4) = 187では、ターゲットPLEが300未満の非常に低いターゲットPLEになります。このインスタンスは290GBのSQL Serverデータ(ログファイルを含まない)を持ち、統合テストにのみ使用されます。過去12日間がこのサーバーの典型的な使用法を代表していると仮定すると、max server memory (mb)設定を下げることができると思います。 スケールのもう一方の端には、294のPLEを持つ別の統合テストサーバーがあり、そのサーバーのmax server memory (mb)設定は1 GBのみです。このサーバーには、ログを含まないSQL Serverデータが224MBしかなく、一部のBizFlowデータベースが実行されています。このサーバーは、より高いmax server memory (mb)設定の恩恵を受ける可能性があります。 あまりにも多くのメモリが割り当てられている可能性のあるターゲットの良い出発点は、次のものを見ることです。 SELECT RamMB = physical_memory_in_bytes / 1048576 , BufferPoolCommittedMB = bpool_committed * 8192E0 / 1048576 , …

2
ログインには既に別のユーザー名でアカウントがあります
このSQLを実行すると: USE ASPState GO IF NOT EXISTS(SELECT * FROM sys.sysusers WHERE NAME = 'R2Server\AAOUser') CREATE USER [R2Server\AAOUser] FOR LOGIN [R2Server\AAOUser]; GO 次のエラーが表示されます。 ログインにはすでに別のユーザー名でアカウントがあります。 ログインアカウントのこの異なるユーザー名を知るにはどうすればよいですか?

6
MySQLのSELECT句で整数をブール値にキャストする方法は?
私はここに新しいので、私に親切にしてください。次のシナリオがあります。 簡単にするために、MySQLデータベースのビューに表されるテーブルがたくさんあります。私の問題は、このビューに、ある種のイベントか別のイベント(単純なブール値)かを表す値が必要なことです。 `gu`.`StoppingUnitEventME` = `ese`.`MonitoringElement` AS `IsStopingEvent` 結果はintとして表されるため、Entity Frameworkによって読み取られます。問題は、ブール値の戻り値が本当に必要だということです。 CAST((`gu`.`StoppingUnitEventME` = `ese`.`MonitoringElement`) as boolean) AS `IsStopingEvent` これによりエラーが発生し、MySQL Workbenchで表示されません(「...にエラーがあります」といううっとうしいだけです)。 助けてくれませんか? 私のアプリケーションでそれを解決しようとしましたが、後で他のソフトウェアで使用されるので、私はデータベースでこれを解決することを本当に好みます。

2
PostgreSQLからミリ秒単位でタイムスタンプ列を取得する方法は?
timestamp without time zone default now()PostgreSQLデータベースにtype で「作成」された列があります。 列を選択すると、デフォルトで見やすく読みやすい形式になります。 SELECT created FROM mytable; created --------------------------- 2011-05-17 10:40:28.876944 しかし、私はミリ秒だけでタイムスタンプを取得したい(ロングとして)。このようなもの: SELECT myformat(created)FROM mytable; created ----------------- 2432432343876944 PostgreSQLからミリ秒単位でタイムスタンプ列を取得するにはどうすればよいですか? ジャックへの応答: 私はあなたと同じ違いを取得します(-3600)が、使用するtimestamp with time zoneと、「エラー」または違いは「1970-01-01」がタイムゾーンを取得するためであることがわかります+01。 create table my_table_2(created timestamp with time zone); CREATE TABLE insert into my_table_2 (created) values (now()), ('1970-01-01'); INSERT 0 2 select created, …

19
SQL Server Management Studioが新しいウィンドウをゆっくり開く
SQL ServerとManagement Studioの両方を2008から2012にアップグレードした後、新しいクエリウィンドウとダイアログボックスを開くとManagement Studio 2012が非常に遅くなります。 テーブルを右クリックしても遅くなります。通常、ウィンドウ内で何かを始める前に、少なくとも5秒の遅延があります。同じウィンドウを連続して2回開いても、これは毎回発生します。なぜこれが起こり、どうすれば修正できますか? 他のアプリケーションは、データベースへの接続を非常に高速に確立します。 私が試したものは助けにはなりませんでした: hostsファイルを変更する必要があるGoogleでのヒット SSMS「ユーザー定義設定」のリセット ビデオドライバの更新、ハードウェアアクセラレーションの無効化、DirectXの無効化 生体認証サービスを無効にします(インストールしていません)。 私のコンピューターは十分に高速でなければならず、16GBのRAMもあります。私のハードウェアは間違いなく問題ではないはずです。SSMSが何かを待っているようです-これが起こっている間、私は他のプログラムをスムーズに操作できます。 SQL Server 2012 CU1更新プログラムをインストールする機会はありません。修正プログラムのインストールでエラーが発生するリスクがあるようで、現時点ではリスクを負うことができません。

4
空間インデックスは「範囲-順序-制限」クエリに役立ちますか
R-tree / spatialインデックスに適しているので、特にPostgresに対してこの質問をすること。 次の表に、単語とその頻度のツリー構造(ネストされたセットモデル)を示します。 lexikon ------- _id integer PRIMARY KEY word text frequency integer lset integer UNIQUE KEY rset integer UNIQUE KEY そしてクエリ: SELECT word FROM lexikon WHERE lset BETWEEN @Low AND @High ORDER BY frequency DESC LIMIT @N カバリングインデックス(lset, frequency, word)が有効であると思いlsetますが、(@High, @Low)範囲内の値が多すぎるとうまく機能しない可能性があります。 (frequency DESC)そのインデックスを使用した検索@Nが範囲条件に一致する行を早期に生成する場合、単純なインデックスで十分な場合もあります。 しかし、パフォーマンスはパラメーター値に大きく依存するようです。 範囲(@Low, @High)が広いか狭いかに関係なく、また、頻度の高い単語が幸運にも選択された範囲内にあるかどうかにかかわらず、高速に実行する方法はありますか? Rツリー/空間インデックスは役立ちますか? インデックスの追加、クエリの書き換え、テーブルの再設計、制限はありません。

3
SELECTステートメントのOPTION FASTは何をしますか?
ステートメントOPTION (FAST XXX)内でクエリヒントが何をするかを掘り下げましたが、SELECTまだ混乱しています。MSDNによると: クエリが最初のnumber_rowsの高速取得のために最適化されることを指定します。これは非負の整数です。最初のnumber_rowsが返された後、クエリは実行を継続し、完全な結果セットを生成します。 私にとってそれはあまり意味がありませんが、基本的にクエリは最初のXXX行を本当に速く取得でき、残りは通常の速度で取得できますか? これについて考えさせられたMicrosoft Dynamicsクエリは次のとおりです。 select pjproj.project,pjproj.project_desc,pjproj.customer,pjproj.cpnyid from pjproj WITH (NOLOCK) where project like '%' order by project OPTION(FAST 500) 誰でもこのクエリヒントが何をしているのかを正確に説明できますか?それはそれを使用しないよりも有利です?

3
循環外部キー参照を持つことは許容できますか?
外部キーフィールドの2つのテーブル間で循環参照を使用することはできますか? そうでない場合、これらの状況をどのように回避できますか? もしそうなら、どのようにデータを挿入できますか? 以下は、(私の意見では)循環参照が受け入れられる場所の例です。 CREATE TABLE Account ( ID INT PRIMARY KEY IDENTITY, Name VARCHAR(50) ) CREATE TABLE Contact ( ID INT PRIMARY KEY IDENTITY, Name VARCHAR(50), AccountID INT FOREIGN KEY REFERENCES Account(ID) ) ALTER TABLE Account ADD PrimaryContactID INT FOREIGN KEY REFERENCES Contact(ID)

3
1つの列と別の列のいずれかを個別に選択する方法は?
1つの列のすべての個別の値を見つけるためにSQLデータベースを照会する必要があり、別の列の任意の値が必要です。たとえば、キーと値の2つの列がある次の表を考えます。 key value === ===== one test one another one value two goes two here two also three example 個別のキーから任意に選択した1つのサンプル行を取得し、おそらく次の3行を取得したいです。 key value === ===== one test two goes three example SQLでこのようなクエリを作成するにはどうすればよいですか?
29 query 

2
PostgreSQLクライアントにSSLの使用を強制しますか?
で構成しssl = onましたpostgresql.conf(および証明書などをインストールしました)。これにより、すべてのクライアントが常にSSL経由で接続されるようになりますか? (つまり、SSL暗号化なしでssl = onは接続できなくなるのですか?) すべてのクライアントが常にSSL / TLS経由で接続することを保証する他の方法はありますか? よろしく、KajMagnus
29 postgresql 

6
ディスク領域の割り当てと使用領域を報告するクエリ
1つのアプリケーションで合計6つのデータベースを使用しており、6つの自動拡張データベースすべて(SANストレージ経由)で共有できるのは4TBのみです。 SQL Server Management Studioの[タスク]> [圧縮]> [データベース]オプションで[現在割り当てられているスペース]および[使用可能な空きスペース]属性を示す単一のデータベースのクエリ(レポート)を作成します。 次に、これらの数値をTBに変換し、各データベースを合計して、残されたスペースの大まかな見積もりを取得します。T-SQLクエリを介してこれらのフィールドにアクセスできますか?その場合、クエリはどのようになりますか?

3
ANSI SQLがSUM(行なし)をNULLとして定義するのはなぜですか?
ANSI SQL標準定義(章6.5、セット機能仕様)空の結果セット上の集約関数の次の動作: COUNT(...) = 0 AVG(...) = NULL MIN(...) = NULL MAX(...) = NULL SUM(...) = NULL 空のセットの平均、最小、最大は定義されていないため、AVG、MIN、MAXにNULLを返すことは完全に理にかなっています。 ただし、最後の1つは気になります。数学的には、空のセットのSUMは明確に定義されています0。基本ケースがすべての一貫性を保つため、加算の中立要素である0を使用します。 SUM({}) = 0 = 0 SUM({5}) = 5 = 0 + 5 SUM({5, 3}) = 8 = 0 + 5 + 3 SUM({5, NULL}) = NULL = 0 + 5 + …

3
BLOBを別のSQL Serverテーブルに保存することが推奨されるのはなぜですか?
この非常に支持されたSOの回答では、別のテーブルとの1:1関係しかない場合でも、画像を別々のテーブルに配置することを推奨しています。 写真をSQL Serverテーブルに配置する場合、写真を保存するために別のテーブルを使用することを強くお勧めします。従業員の写真を従業員のテーブルに保存せずに、別のテーブルに保管してください。このように、従業員のテーブルは、クエリの一部として従業員の写真も常に選択する必要がないと仮定すると、無駄がなく、平均的で非常に効率的です。 どうして?SQL Serverはテーブルに専用のBLOBデータ構造へのポインターのみを格納しているのではないかという印象を受けましたが、なぜ別の間接層を手動で作成する必要があるのですか?それは本当にパフォーマンスを大幅に改善しますか?はいの場合、なぜですか?
28 sql-server  blob 

2
正の場合、すべてのアイテムを合計します。負の場合、それぞれを返します
SUM()すべての正の値のすべての正の値への方法を見つけnumてSUM()、すべての正の数と各負の数の個別の行を返す必要があります。以下にサンプルDDLを示します。 Create Table #Be ( id int , salesid int , num decimal(16,4) ) Insert Into #BE Values (1, 1, 12.32), (2, 1, -13.00), (3, 1, 14.00) , (4, 2, 12.12), (5, 2, 14.00), (6, 2, 21.23) , (7, 3, -12.32), (8,3, -43.23), (9, 3, -2.32) そして、これは私の希望する出力です(各salesidの正の数値SUM()と負の数値は個別の行を返します): salesid num 1 …

1
インデックス付きJSONBとhstore
この段階では、可能な限り少ない仮定(Webアプリの実際の進化に関する)でデータベース設計を決定しようとしています。 JOINSが高価であることを理解するための最初のステップとして、多数の正規化された小さなテーブルではなく、少数のモノリシックテーブルを検討しています。2番目のポイントとして、hstoreと通常のテーブルとJSONB(GiSTインデックス付け)を使用することで混乱しています。 知っている(気軽に修正してください): 一般に、Postgresでは、hstoreは他のデータ型よりもパフォーマンスが良いことが知られています。FOSDEM PGDAYからのこのプレゼンテーションには、いくつかの興味深い統計があります(スライドの後半)。 https://wiki.postgresql.org/images/b/b4/Pg-as-nosql-pgday-fosdem-2013.pdf hstoreの利点は、高速インデックス(GiNまたはGiST)です。ただし、JSONBでは、GiNおよびGiSTインデックス付けをJSONデータに適用することもできます。 第2象限の専門家によるこのブログは、「この時点で、おそらくすべての新しいアプリケーションでhstoreの使用をjsonbに置き換える価値がある」と述べています(最後までスクロール):http ://blog.2ndquadrant.com/postgresql-anti-patterns-unnecessary -jsonhstore-dynamic-columns / だから私は次のことを決定したいと思います: データの主要な(構造化された)部分の場合:いくつかのリレーショナルテーブル(多くの列を持つ比較的大きい)に入れるべきですか、それともhstoreを使用する多数のキー値ストアである必要がありますか? アドホック(ユーザー提供/非構造化)データの場合、JSONまたはhstoreのアドホックキー値ストア(メインリレーショナルテーブルのいずれかにキーが格納されている)に格納する必要がありますか?

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