データベース管理者

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

5
SQL ServerでTimeZoneを適切に処理する方法は?
私のローカル開発サーバーは中東にありますが、本番サーバーは英国にあります。 ユーザーにタイムゾーンで日付を表示する必要があります。たとえば、ユーザーがサウジアラビアにいる場合、サウジアラビアの形式に従って時間を表示する必要があります。 TimeZoneという新しいデータベーステーブルを作成し、UTCで時間を保存する必要がありますか?

4
MySQLデータベースを別のドライブに移動するにはどうすればよいですか?
ローカルマシンでMySQL 5.5を使用して、大量の政府データを分析しています。デフォルトのドライブ(Win7 C:ドライブ)にあるローカルデータベースを作成しました。大容量のeSATA外付けドライブであるE:ドライブにデータを保存したいと思います。 どのような手順を実行する必要がありますか?
34 mysql 

2
XMLリーダーを使用した計画の最適化
ここからクエリを実行して、デフォルトの拡張イベントセッションからデッドロックイベントを引き出します。 SELECT CAST ( REPLACE ( REPLACE ( XEventData.XEvent.value ('(data/value)[1]', 'varchar(max)'), '<victim-list>', '<deadlock><victim-list>'), '<process-list>', '</victim-list><process-list>') AS XML) AS DeadlockGraph FROM (SELECT CAST (target_data AS XML) AS TargetData FROM sys.dm_xe_session_targets st JOIN sys.dm_xe_sessions s ON s.address = st.event_session_address WHERE [name] = 'system_health') AS Data CROSS APPLY TargetData.nodes ('//RingBufferTarget/event') AS XEventData (XEvent) …

4
LocalDB v14はmdfファイルの間違ったパスを作成します
最近、SQL Server Expressインストーラーとこの手順を使用して、LocalDBをバージョン13から14にアップグレードしました。インストール後、バージョン13の既存のデフォルトインスタンス(MSSQLLOCALDB)を停止し、v14.0.1000サーバーエンジンを自動的に使用する新しいインスタンスを作成しました。 データベース統合テストによくLocalDBを使用します。つまり、xunitテストでは、テストが終了すると削除される(一時的な)データベースを作成します。新しいバージョン以降、残念ながら次のエラーメッセージが原因ですべてのテストが失敗します。 物理ファイル 'C:\ Users \ kepflDBd0811493e18b46febf980ffb8029482a.mdf'を開くまたは作成しようとしたときに、CREATE FILEでオペレーティングシステムエラー5(アクセスが拒否されました)が発生しました。 奇妙なことは、mdfファイルのターゲットパスが正しくないことです。C:\ Users \ kepflとDBd0811493e18b46febf980ffb8029482a.mdf(単一のテストのランダムなデータベース名)の間にバックスラッシュがありません。データベースは単純なコマンドで作成されますCREATE DATABASE [databaseName]-ここでは特別なことは何もありません。 SSMSでは、データ、ログ、およびバックアップのターゲットの場所は次のとおりです。 ただし、場所を更新しようとすると、別のエラーメッセージが表示されます。 LocalDBがデータベースを再度作成できるように、デフォルトの場所を更新するにはどうすればよいですか?LocalDBがデフォルトのロケーションディレクトリとデータベースファイル名を正しく結合していないことは明らかです。編集できるレジストリエントリはありますか?または他に何か? Dougの回答とsepupicのコメントの後の更新 このStackoverflowの質問によると、デフォルトの場所もレジストリ経由で変更可能である必要があります。ただし、対応するキー「DefaultData」、「DefaultLog」、および「BackupDirectory」を見つけようとすると、レジストリでそれらを見つけることができません。SQL Server v14はこれらのレジストリキーの名前を変更しましたか、またはこれらの情報をレジストリから移動しましたか?

3
SELECTクエリが書き込みを引き起こすのはなぜですか?
SQL Server 2016 SP1 CU6を実行しているサーバーで、拡張イベントセッションに書き込みを引き起こすSELECTクエリが表示されることがあることに気付きました。例えば: 実行計画には、TempDBに流出する可能性のあるハッシュテーブル、スプール、並べ替えなど、書き込みの明白な原因は示されていません。 MAXタイプへの変数の割り当てまたは自動統計更新もこれを引き起こす可能性がありますが、どちらもこの場合の書き込みの原因ではありませんでした。 書き込みは他に何ができますか?

2
時系列:SQLまたはNoSQL?
SQLとNoSQLの一般的な違い(または従来の違い)は気にしません。 現在、内部時系列のストレージの変更を検討しています。これらにはすべて、さまざまなソースからの財務データが含まれています。現在、独自のデータベースにデータを保存しています。独自のクエリ言語を持つのは、まさにNoSQLです。 コミュニティからのインプットに興味があります。SQLデータベースにデータをどのように保存しますか?NoSQLを介してSQLを使用すること、特に時系列のメリットは何ですか?これをSQLに保存することを検討するのは正気ですか? データセットは数百万の時系列で構成され、これらの約10%にはそれぞれ数百万のレコードが含まれています。時系列は階層的に整理されます:/ Market / Instrument / Value / Frequency、ここで: 市場は証券取引所などであり、基本的には商品の集まりであり、通常は同様の商品です。 楽器は楽器です。これはインジケーター(ブレント原油)、エクイティ(GOOG)などです。 値は、楽器の複数の種類のデータの1つです。これは、近い、高い、低いなどです 頻度は、特定の時系列値の頻度です。毎週、毎日、毎月、ティック、任意など データはどのようにSQL dbに保存されますか?1つの大きなテーブル(何かで分割されている場合があります)、市場または銘柄ごとに1つのテーブル、時系列ごとに1つのテーブル。 前もって感謝します。
33 nosql 



2
PostgreSQLでマテリアライズドビューを段階的に更新する
PostgreSQLでマテリアライズドビューを段階的に更新することはできますか。つまり、新規または変更されたデータに対してのみですか。 次の表とマテリアライズドビューを検討してください。 CREATE TABLE graph ( xaxis integer NOT NULL, value integer NOT NULL, ); CREATE MATERIALIZED VIEW graph_avg AS SELECT xaxis, AVG(value) FROM graph GROUP BY xaxis 定期的に、新しい値が追加されるgraphか、既存の値が更新されます。graph_avg更新された値についてのみ、数時間ごとにビューを更新します。ただし、PostgreSQL 9.3では、テーブル全体が更新されます。これにはかなり時間がかかります。次のバージョン9.4ではCONCURRENT更新が可能ですが、ビュー全体が更新されます。何億行もあるため、これには数分かかります。 更新された新しい値を追跡し、部分的にのみビューを更新する良い方法は何ですか?

4
より多くのCPUとRAMを割り当てた後のSQL Serverパフォーマンスの低下
仮想Windows 2008 R2サーバーで実行されているSQL Server 2008 R2(10.50.1600)があります。CPUを1コアから4に、RAMを4 GBから10 GBにアップグレードした後、パフォーマンスが低下していることに気付きました。 私が見るいくつかの観察: 実行に5秒未満かかったクエリは、現在200秒以上かかっています。 CPUは、sqlservr.exeを原因として100に固定されています。 4.6百万行のテーブルでのselect count(*)は90秒以上かかりました。 サーバーで実行されているプロセスは変更されていません。唯一の変更点は、CPUとRAMを増やすことでした。 他のSQLサーバーには静的なページングファイルがあり、このサーバーはそれを独自に管理するように設定されています。 以前にこの問題に遭遇した人はいますか? sp_BlitzErikごとに、私は走りました EXEC dbo.sp_BlitzFirst @SinceStartup = 1; これらの結果を与えてくれます。

1
MongoDBのサンプルYAML構成ファイル?
MongoDBの構成オプションのドキュメントのリストを指定することができますが、誰でもYAMLはさまざまなロールでのMongoDBインスタンスの設定ファイルをフォーマットされた完全に形成された例のセットを持っていない、すべての利用可能なオプション? 一般的なロールのサンプルセットは、ゼロから始める場合や、最新の構成ファイル形式でテストする場合に非常に便利な出発点になります。
33 mongodb 

2
ISO WeekとSQL Server Week
さて、今週と先週の比較を行うレポートがありますが、お客様はデータが「ファンキー」であることに気付きました。さらに調査した結果、ISO規格に従って数週間は正しく動作していませんでした。このスクリプトをテストケースとして実行しました。 SET DATEFIRST 1 SELECT DATEPART(WEEK, '3/26/13') , DATEPART(WEEK, '3/27/12') , DATEPART(WEEK, '3/20/12') , DATEPART(WEEK, '1/2/12') SELECT DATEPART(ISO_WEEK, '3/26/13') , DATEPART(ISO_WEEK, '3/27/12') , DATEPART(ISO_WEEK, '3/20/12') , DATEPART(ISO_WEEK, '1/2/12') 実行すると、これらの結果が得られました。 これは奇妙だと思ったので、さらに掘り下げてみると、SQL Serverは1月1日を年の最初の週としてカウントし、ISOは1月の最初の日曜日を年の最初の週としてカウントします。 質問は最終的に2倍になります。質問1これはなぜですか?質問2これを変更する方法はあるので、ISO_Weekどこでも使用するためにすべてのコードを変更する必要はありませんか?

1
BACKUPコマンドのBUFFERCOUNT、BLOCKSIZE、およびMAXTRANSFERSIZEの設定
私を探しています実用的に値を設定するためのガイダンスBUFFERCOUNT、BLOCKSIZEおよび、MAXTRANSFERSIZEのBACKUPコマンド。私は少し調査を行い(以下を参照)、少しテストを行いました。本当に価値のある答えは「まあ、それは...」で始まることを十分に認識しています。私が行ったテストと私が見つけたリソースのいずれかに示されているテスト(以下の方法を参照)に対する私の懸念は、テストが真空で行われることです。ほとんどの場合、他の負荷のないシステムで行われます。 長期的な経験に基づいたこれらの3つのオプションに関する適切なガイダンス/ベストプラクティスに興味があります:数週間または数か月にわたる多くのデータポイント。そして、特定の値を探しているわけではありません。それはほとんどが利用可能なハードウェアの機能だからです さまざまなハードウェア/負荷要因が、実行すべき内容にどのように影響するか。 これらの値がどれもオーバーライドされるべきではない状況はありますか? すぐに明らかではないこれらのいずれかをオーバーライドするための落とし穴はありますか?メモリーやディスクI / Oを使いすぎていますか?復元操作を複雑にしますか? SQL Serverの複数のインスタンス(既定のインスタンスと2つの名前付きインスタンス)を実行しているサーバーがあり、3つのインスタンスすべてのバックアップを同時に実行すると、集合(BUFFERCOUNT* MAXTRANSFERSIZE)使用可能なRAMを超えていませんか?可能なI / O競合? 1つのサーバーで3つのインスタンスを使用し、3つすべてのバックアップを同時に同時に実行する同じシナリオで、各インスタンス内で複数のデータベースのバックアップを同時に実行すると、これらの値の設定にどのように影響しますか?つまり、3つのインスタンスのそれぞれに100個のデータベースがあり、各インスタンスごとに2つまたは3つのバックアップを同時に実行し、6から9のバックアップが同時に実行される場合。(この状況では、いくつかの大きなデータベースではなく、多くの中小規模のデータベースがあります。) これまでに収集したもの: BLOCKSIZE: サポートされるサイズは、512、1024、2048、4096、8192、16384、32768、および65536(64 KB)バイトです。[1] デフォルトは、テープデバイスの場合は65536、それ以外の場合は512です[1] CD-ROMへのコピーおよびCD-ROMからの復元を計画しているバックアップを作成する場合は、BLOCKSIZE = 2048 [1]を指定します 単一のディスクに書き込む場合、デフォルトの512で十分です。RAIDアレイまたはSANを使用する場合は、デフォルトまたは65536のどちらが優れているかをテストする必要があります。[13(18ページ)] 手動で設定する場合、値はデータファイルの作成に使用されるブロックサイズ以上でなければなりません。そうでない場合、次のエラーが表示されます。 メッセージ3272、レベル16、状態0、行3 'C:\ Program Files \ Microsoft SQL Server \ MSSQL11.MSSQLSERVER \ MSSQL \ Backup \ BackupTest.bak'デバイスのハードウェアセクターサイズは4096ですが、ブロックサイズパラメーターは互換性のない512のオーバーライド値。互換性のあるブロックサイズを使用してステートメントを再発行します。 BUFFERCOUNT: デフォルト[2]、[8]: SQL Server 2005以降のバージョン: (NumberofBackupDevices * [mystery_multiplier])+ NumberofBackupDevices +(2 …

3
CPUパフォーマンスはデータベースサーバーに関連していますか?
これは純粋に理論的な質問です。複数のサーバーにデプロイされたアプリケーションがあるとします。 ロードバランサー、 複数/スケーラブルなアプリケーションサーバー (単一の)データベースサーバー(現時点では) 最初の2つの部分では、何を探すべきかがわかります。しかし、データベースサーバーはどうでしょうか。どのようなハードウェアを探すべきですか? CPU周波数はデータベースサーバーに関連していますか? 複数のコアCPUが関連していますか? RAMはCPUよりも重要ですか? PS:選択したデータベースがMySQLまたはPostgreSQLであると仮定します。

4
ユーザーストアドプロシージャの名前をsp_で開始するのはまだ間違っていますか?
私の同僚の1人が、SQL Server 2008 R2データベースのストアドプロシージャに名前を付けましたsp_something。これを見たとき、私はすぐに考えました:「それは間違っている!」なぜ間違っているのかを説明するこのオンライン記事のブックマークを検索し始めたので、同僚に説明を提供することができました。 (Brian Moranによる)記事では、ストアドプロシージャにsp_プレフィックスを付けると、SQL Serverがコンパイル済みプランのマスターデータベースを参照することが説明されています。sp_sprocが存在しないため、SQL Serverはプロシージャを再コンパイルします(そのためには排他的なコンパイルロックが必要で、パフォーマンスの問題が発生します)。 次の例は、2つの手順の違いを示すために記事に記載されています。 USE tempdb; GO CREATE PROCEDURE dbo.Select1 AS SELECT 1; GO CREATE PROCEDURE dbo.sp_Select1 AS SELECT 1; GO EXEC dbo.sp_Select1; GO EXEC dbo.Select1; GO これを実行してから、プロファイラーを開き(ストアドプロシージャ-> SP:CacheMissイベントを追加)、ストアドプロシージャを再度実行します。2つのストアドプロシージャには違いがあるはずです。sp_Select1ストアドプロシージャはSP:CacheMiss、Select1ストアドプロシージャよりも1つ多くのイベントを生成します(この記事では、SQL Server 7.0とSQL Server 2000を参照しています)。 SQL Server 2008 R2環境で例を実行すると、SP:CacheMiss両方の手順(tempdbと別のテストデータベースの両方)で同じ量のイベントが発生します。 だから私は疑問に思っています: 例の実行で何か間違ったことをしたことはありますか? 'ユーザーに名前を付けないsproc sp_something' adagiumは、SQL Serverの新しいバージョンでもまだ有効ですか? その場合、SQL Server …

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