データベース管理者

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


2
TDE準備:復元用のキー/証明書のバックアップ
私はTDE暗号化をよりよく理解するために開発環境で働いています。別のサーバーでのバックアップおよびリストアと一緒に機能しています。いくつか質問がありましたが、対応する秘密鍵で証明書をバックアップする必要があることを知っています。 USE master; GO BACKUP CERTIFICATE Test TO FILE = 'C:\Test.cer' WITH PRIVATE KEY (FILE = 'C:\Test.pvk', ENCRYPTION BY PASSWORD = 'Example12#') これらは、障害が発生した場合に新しいサーバーに移動/復元する必要があります。別のサーバーに復元する必要がある場合に必要となる、ソースサーバーからバックアップする必要があるものは他にありますか? また、秘密鍵のストレージに関する提案はありますか?現時点での私の考えは、証明書、秘密鍵、およびパスワードを、個別にバックアップされ、オフサイトで複製されるKeePassデータベースにバックアップすることです。 それでも、KeePass秘密鍵をどこにバックアップするかという疑問は残りますか?

2
Ordersテーブルへの請求先住所のベストプラクティスの保存
誰かがCustomerLocationテーブルに対するこのユーザーの回答を理解するのを手伝ってくれませんか。注文テーブルに住所を保存するための優れた方法が本当に必要です。 私が探しているのは、住所を設定する方法です。そのため、住所を編集しても、顧客が住所を更新したり移転したりしても、注文は影響を受けません。 現状では、私のスキーマは次のようになります。 Person |EntityID| EntityAddress |EntityID|AddressID| Address |AddressID|AddressType|AddressLine1|AddressLine2| Order |OrderID|BillingAddressID|

2
なぜasync_network_ioの待機タイプが発生するのですか?
先週、データベースで奇妙なことが起こりました。新しいエンティティなどを保存できなかったユーザーに対して、アプリケーションが突然ブロックされました。SQLServerのアクティビティモニター(2008と互換モード2005)を確認した後、次の3つのエントリが表示されました。 しばらくすると、ユーザーは接続タイムアウトを取得しました。プロセス64を強制終了したとき、彼らは再び正常に保存できました。 問題は、ブロック中に保存しようとしたエンティティがDBに複数回(最大3回)挿入されたことですが、これを防ぐためのコード(数値列は一意でなければならないが制約なし)があるはずです...チェックはコードで行われます)。 Entity Framework 6.0を使用しています。 これらのASYNC_NETWORK_IO待機タイプが発生する理由とタイミング、およびそれらを回避する方法を知っている人はいますか? そして、それらは正確にはどういう意味ですか?

3
PostgreSQLはインデックスにnullを使用できますか?
私はそれを言っているこの本を読んでいます データベースは、Indexed_Col IS NOT NULLがカバーする範囲が大きすぎて役に立たないと想定しているため、データベースはこの状態からインデックスに移動しません。 この本は10年以上前のものであると認識していますが、すでに非常に有用であることが証明されています。 さらに、クエリを実行EXPLAIN ANALYZEしSELECTているときに、自分のインデックスがまったく使用されていないことがわかりました。 したがって、私の質問は: 列が "NOT NULL"を含む列を持つテーブルがあり、この列をカバーするインデックスが存在する場合、このインデックスは、列がクエリの一部であるテーブルのクエリで使用されますか? お気に入り: CREATE TABLE my_table( a varchar NOT NULL ); CREATE INDEX ix_my_table ON my_table(a); SELECT a from my_table;

3
なぜパーティション化しないのですか?
いつデータベースを分割したくないですか?(MySQLパーティショニングを考える) 私の場合 私は数百万行から始めます。そこから成長するはずです。 最も頻繁なクエリ制約として機能する文字フィールドの主キー(および検索が頻繁に-少なくとも1秒に数回)。 主キーは、パーティションキーとして機能するようにハッシュされます 上記の頻繁なクエリでプルされるすべての行が更新されます (日付列などに対する)頻度の低い検索では、すべてのパーティションをヒットする必要があります 最後の点でさえ、ルックアップは並行して実行されないので、すべての場合において、これは勝利ですか?パーティショニングの欠点は何ですか?少なくとも、100万件以上のレコードを表示しているときに、誰もがデフォルトで使用するものではないのですか? 更新-私はzgguyの回答を選択しましたが、私にとって非常に有用な同様の質問に対する本当に良い回答へのリンクを含む自分の調査の結果に自分の回答を追加したことに注意してください。

1
Azure SQL Serverが非常に遅いのはなぜですか?
現在、非常に能力の低いVMがあり、より良い仕様のAzure VMに移行することを提案しています。問題は、Azure VMのスペックが高くても、Azure VMが元のVMよりもはるかに遅いことです。 元のサーバーは、2 GBのメモリを備えた2コアVMであり、Webサーバーでもあります。Microsoft SQL Server Web Edition 2008 R2を実行しており、このサーバーは他の目的で使用されるため、SQL Serverの最大サーバーメモリを512MBに制限する必要がありました。 新しいサーバーは、データベースサーバーのみである、7 GBのメモリを備えた4コアVMです。Microsoft SQL Server Standard Edition 2008 R2を実行しており、SQL Serverが使用できるメモリの量を制限していません。 これは、ミラーリング環境でセットアップされた2つのサーバーの1つですが、テストを実行しているデータベースがミラーリングされていません。このサーバー上の他のデータベースは、現時点ではトラフィックをあまり取得していません(実際、これらのテストを実行している間、アクティビティモニターは他のDBでアクティビティを示していません)。 Azure VMの問題はハードドライブがネットワークリソースであるため、スローダウンの原因になることは承知していますが、IO統計に物理的な読み取りが0の場合でも、速度は遅くなります。 ディスクのストライプ化(ドライブごとに2つのディスク)、ログとデータファイルを別々のドライブに配置することなど、Azure VMのこのページのチューニングアドバイスに従いました。 私が行っていないことは、ページ圧縮を有効にし、データベースの自動拡張を制限し、SQLサーバーのエラーログとトレースファイルのディレクトリをデータディスクに移動することだけです。私は古いサーバーでもそれをしていません。 古いサーバーではこの調整は行われず、ログとデータファイルはストライプ化されていない同じドライブ上にあります。 現在のサーバーのデータベースは65 GB(45データと20ログ)であり、新しいサーバーに転送するには少し大きすぎるため、より小さなDB(6データと13.5ログ)でテストしています。 古いサーバーでの結果CPU time = 1311 ms, elapsed time = 1057 ms.と新しいサーバーでCPU time = 1281 ms, elapsed time = 2525 ms. …

1
このクエリで主(クラスター)キーが使用されないのはなぜですか?
スキーマ構造が次のようなSQL Server 2008 R2テーブルがあります。 CREATE TABLE [dbo].[CDSIM_BE] ( [ID] [bigint] NOT NULL, [EquipmentID] [varchar](50) NOT NULL, [SerialNumber] [varchar](50) NULL, [PyrID] [varchar](50) NULL, [MeasMode] [varchar](50) NULL, [ReadTime] [datetime] NOT NULL, [SubID] [varchar](15) NULL, [ProbePosition] [float] NULL, [DataPoint] [int] NULL, CONSTRAINT [PK_CDSIM_BE] PRIMARY KEY CLUSTERED ([ID] ASC, [EquipmentID] ASC, [ReadTime] ASC) WITH …

3
誰が手順を作成しましたか?(SQL Server 2008 R2)
SQL Server 2008で特定の調達を作成したユーザーを一覧表示する方法はありますか? ではこのSOのリンクがいくつかの答えですが、6yrsから前に。 名前と日付を書いてから手順の作成を始めるのが最善の策であることはわかっていますが、私が作業しているところはわかりません。 これを行う方法がない場合、このタスクはトリガーで実行できますか? そしておまけの質問。これはdbaの仕事ですか?誰がそれを作ったのか知りたい? どうもありがとうございました。

1
SQL Server 2014でクエリプランがパフォーマンスを悪化させる
最近、サーバーをSQL Server 2008R2からSQL Server 2014にアップグレードしました。2008R2で正常に実行されたクエリがありますが、2014年には実行が非常に遅くなり、実行計画が不良です。 私はいくつかのテストを行いました... 2014 DBを2008/2012互換モードに切り替えます。 ページネーションを使用してクエリをテストします。 これらの両方により、クエリはSQL Server 2008R2と同じように高速で実行されました。 SQL Server 2014で計画がなぜそれほどひどく、クエリが長く実行されるのですか? この画像は2つのクエリを示しており、1つは2008R2での実行方法と同じように行番号を使用しており、2つ目は改ページ調整による修正です。どちらも2014年に実行されましたが、どちらも非常に異なりますが、2008年には、2014年に改ページ調整を使用した場合と同じパフォーマンスが得られます。

1
SQL Serverの使用をリセットする
私の開発環境では、クエリをいじっています。そのために、SQL Serverのメモリ、プランなどをリセットする必要があります。これにより、クエリがすべての値がリセットされたサーバー上の唯一のストレス/作業プロセスであることを確認できます。 私がしていることのいくつか 発砲チェックポイント DBCC DROPCLEANBUFFERS; DBCC FREEPROCCACHE; DBCC FLUSHPROCINDB DBCC FREESESSIONCACHE DBCC SQLPERF( "sys.dm_os_wait_stats"、CLEAR); 私はそれを正しくやっていますか?または、新鮮な統計をクリアまたは表示するには、さらに多くのものが必要ですか?

2
NUMAノード000でPLEが低い、001で高い
SQL ServerのNUMAノード全体のPLE(Page Life Expectancy)を調べていますが、かなり奇妙な分布に遭遇しました。NUMAノード000のPLEは001に比べて非常に低くなっています。これがなぜかはわかりません。環境内の他の複数のSQL Serverを確認しましたが、他の運用サーバーにはこの動作がありません。 システムは256GB RAMのDell m620でSQL Server 2012 Enterprise Editionを実行しています。2ソケット、6コア(HT対応)マシンです。MAXDOPは6に設定されています。AFAIKメモリモジュールは、CPUのメモリバンク全体に均等に取り付けられています。 NUMAノード000には他に実行すべきSQLタスクがあること、他のノードがあることを教えてくれますが、どこで聞いた/見たのか忘れてしまいました。 @@Version 表示:Microsoft SQL Server 2012(SP1)-11.0.3412.0(X64)

6
読み取り専用アプリケーションインテントのSSMS登録済みサーバー
現在、AlwaysOnを使用したSQL Server 2014 POCテストに取り組んでおり、ユーザーの1人が、ローカルサーバーグループに登録されているサーバーを使用して、ReadOnly Intent でSSMSの構成を保存することについて質問しました。これにより、ReadOnlyレプリカにアクセスする必要があるたびにエイリアス名を入力する必要がなくなります。 残念ながら、登録されたサーバー内には、通常のオブジェクトエクスプローラーとは異なり、ApplicationIntentオプションを追加するオプションはありません。 RegSrvr.xmlの接続文字列を変更することについて、マイクロソフトからこの記事を見つけました。 https://connect.microsoft.com/SQLServer/feedback/details/786323/ssms-sql-server-management-studio-2012-missing-connection-properties-for-availability-groups 私は彼らの提案を試してみましたが、登録済みサーバーのローカルサーバー経由で接続すると、正しいレプリカノードに接続しませんでした。 読み取り専用の接続ウィンドウのオプション>接続パラメータを使用した場合のオプションは、オブジェクトエクスプローラから罰金を動作します。ただし、接続に加えられた変更は保存されません。 SSMS でReadOnly Intentプロパティを使用して構成を保存するための代替ソリューションを知っている人はいますか?よろしくお願いします。

9
データディレクトリを変更した後、MongoDBが起動しない
yummongodbを使用してインスタンスをインストールしました。。これですべてが正常に動作します。を使ってサービスを開始しましたservice mongod start。それはうまくいきます。次に、構成ファイルでdata directoryとを変更しlog pathました。サーバーを再起動し、サービスを開始しました。しかし、私は以下のエラーを受け取ります: Restarting mongod (via systemctl): Job for mongod.service failed. See 'systemctl status mongod.service' and 'journalctl -xn' for details. [FAILED] 私が与えるとき、私systemctl status mongod.serviceは以下を得ます: Loaded: loaded (/etc/rc.d/init.d/mongod) Active: failed (Result: exit-code) since Wed 2015-03-18 11:35:56 IST; 22s ago Process: 10672 ExecStop=/etc/rc.d/init.d/mongod stop (code=exited, status=0/SUCCESS) Process: 10841 ExecStart=/etc/rc.d/init.d/mongod start …

2
実行速度の遅いクエリの統計を取得する
私のデータベースアプリケーションは、さまざまなクエリを実行します。私はlog_min_duration_statement1000に設定しました。ただし、そこに記録されたクエリは常に遅くなるとは限りません。ほとんどの場合、数ミリ秒しかかかりません。 すべてのクエリの統計情報を取得することは可能ですか?また、クエリが1000ミリ秒以上かかった頻度はどれくらいですか?

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