データベース管理者

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

3
実行計画の基本—ハッシュマッチの混乱
私は実行計画を学び始めており、ハッシュマッチが正確にどのように機能するのか、そして単純な結合でそれが使用される理由について混乱しています: select Posts.Title, Users.DisplayName From Posts JOIN Users on Posts.OwnerUserId = Users.Id OPTION (MAXDOP 1) 私が理解しているように、トップインデックススキャンの結果はハッシュ可能になり、ボトムインデックスクラスタースキャンの各行が検索されます。ハッシュテーブルが少なくともある程度機能することは理解していますが、このような例ではどの値が正確にハッシュされるかについて混乱しています。 私が理にかなっているのは、それらの間の共通フィールドであるidがハッシュされていることですが、もしそうなら、なぜ数値をハッシュするのでしょうか?

4
Oracleデータベースのsysアカウントとsystemアカウントの違いは何ですか?
sqlplusを使用して管理者としてOracleに接続するには、2つの方法があります。 sqlplus sys as sysdba sqlplus system/manager これらのアカウントはさまざまな目的に使用する必要があると思います。 これら2つのスキーマはどのタスクを対象としていますか?それらのうちいつどちらを使用すればよいですか?

5
重いInnoDBワークロードに合わせてMySQLをどのように調整しますか?
主にInnoDBテーブルを持つ本番OLTPシステムを想定 システムの調整ミス/構成ミスの一般的な症状は何ですか? どの設定パラメーターをデフォルトから最もよく変更しますか? 問題が発生する前に、潜在的なボトルネックをどのように見つけますか? アクティブな問題をどのように認識してトラブルシューティングしますか? 特定のstatus変数と診断の詳細を示す逸話をいただければ幸いです。

6
テストケースでシーケンシャルGUIDキーがシーケンシャルINTキーよりも高速に実行されるのはなぜですか?
求めた後、このシーケンシャルおよび非シーケンシャルGUIDを比較する質問を、私はGUID主キーを持つテーブルがで順次初期化)1上のINSERTのパフォーマンスを比較してみましたnewsequentialid()主キーがで順次初期化INTと、および2)テーブルidentity(1,1)。整数の幅が小さいため、後者の方が高速であると予想されます。また、順次GUIDよりも順次整数を生成する方が簡単だと思われます。しかし、驚いたことに、整数キーを持つテーブルでのINSERTは、シーケンシャルGUIDテーブルよりも大幅に遅くなりました。 これは、テスト実行の平均時間使用量(ミリ秒)を示します。 NEWSEQUENTIALID() 1977 IDENTITY() 2223 誰でもこれを説明できますか? 次の実験が使用されました。 SET NOCOUNT ON CREATE TABLE TestGuid2 (Id UNIQUEIDENTIFIER NOT NULL DEFAULT NEWSEQUENTIALID() PRIMARY KEY, SomeDate DATETIME, batchNumber BIGINT, FILLER CHAR(100)) CREATE TABLE TestInt (Id Int NOT NULL identity(1,1) PRIMARY KEY, SomeDate DATETIME, batchNumber BIGINT, FILLER CHAR(100)) DECLARE @BatchCounter INT = 1 DECLARE …

3
ヒープ上の非クラスター化インデックスとクラスター化インデックスのパフォーマンス
この2007年ホワイトペーパーでは、クラスター化インデックスとして構成されたテーブルと、CIと同じキー列に非クラスター化インデックスを備えたヒープとして構成されたテーブルの個々の選択/挿入/削除/更新および範囲選択ステートメントのパフォーマンスを比較しています表。 通常、クラスター化インデックスオプションは、維持する構造が1つだけであり、ブックマークの参照が不要なため、テストでのパフォーマンスが向上しました。 この論文で取り上げられていない興味深いケースの1つは、ヒープ上の非クラスター化インデックスとクラスター化インデックス上の非クラスター化インデックスの比較です。その場合、NCIリーフレベルでSQL Serverがクラスター化インデックスをトラバースする必要がなく、直接従うRIDを持っているため、ヒープのパフォーマンスがさらに向上することを期待していました。 この分野で行われた同様の正式なテストを知っている人はいますか?

4
SSMS 2012でのT-SQLのフォーマット
このMicrosoftドキュメントによると: http://msdn.microsoft.com/en-us/library/ms174205.aspx ctrl + K、次にctrl + Dを使用してSQL Server Management Studio 2012でSQLドキュメントをフォーマットできるはずですが、そのコンボを使用するとエラーが発生します。 キーの組み合わせ(Ctrl + K、Ctrl + D)は、現在使用できないコマンド(ドキュメントのフォーマット)にバインドされています。 書式設定がまったくない既存のSQLドキュメントに変更を加えようとしているため、非常に読みにくくなっています。Format Codeコマンドを使用可能にする方法を誰もが知っているので、このコードをSQL形式にできますか?
39 sql-server  ssms 

2
読み取りパフォーマンスのためのPostgreSQLの構成
私たちのシステムは大量のデータを書き込みます(ビッグデータシステムの一種)。書き込みパフォーマンスはニーズには十分ですが、読み取りパフォーマンスは本当に遅すぎます。 主キー(制約)構造は、すべてのテーブルで類似しています: timestamp(Timestamp) ; index(smallint) ; key(integer). テーブルには数百万行、さらには数十億行あり、通常、読み取り要求は特定の期間(タイムスタンプ/インデックス)とタグに対して行われます。通常、約20万行を返すクエリがあります。現在、1秒あたり約15,000行を読み取ることができますが、10倍高速にする必要があります。これは可能ですか?もし可能なら、どのように? 注: PostgreSQLはソフトウェアにパッケージ化されているため、ハードウェアはクライアントごとに異なります。 これは、テストに使用されるVMです。VMのホストは、24.0 GBのRAMを備えたWindows Server 2008 R2 x64です。 サーバー仕様(仮想マシンVMWare) Server 2008 R2 x64 2.00 GB of memory Intel Xeon W3520 @ 2.67GHz (2 cores) postgresql.conf 最適化 shared_buffers = 512MB (default: 32MB) effective_cache_size = 1024MB (default: 128MB) checkpoint_segment = 32 (default: 3) checkpoint_completion_target …

1
SELECT INTOテーブルクエリのWHERE 1 = 2のポイントは何ですか
SQL Serverの既存のテーブルから新しいテーブルを作成する場合、次のことができます。 SELECT * into Table2 from Table1 WHERE 1=2 where句のポイントは何ですか?where句なしで試してみたところ、うまくいきました。私はインターネットの多くの例でこのwhere句を見てきましたが、それが必要な理由ではありません。
39 sql-server 



3
SQL Serverで新しいトレースフラグを見つける方法
そこには多くのトレースフラグがあります。十分に文書化されたものもあれば、そうでないものもあります。また、2016年のリリースでは、デフォルトの動作ステータスへの道を見つけたものもあります。公式のサポートチャネル、マイクロソフトの従業員などは別として、新しいトレースフラグを見つける方法は何ですか? Aaron Bertrandによる最近のいくつかの投稿をこことここで読みましたが、新しいTrace Flagsについては何も見当たりませんでした。 mssqlsystemresourceのデータとログファイルを新しい場所にコピーし、通常のデータベースのように添付してシステムテーブルとビューを調べましたが、すぐには何も見つかりませんでした。既知のトレースフラグのリストを取得し、そのリストにない番号をループして、DBCC TRACEONが許可するものを確認することを検討しましたが、最初にここで質問をしたいと思いました。 それらを有効にするDBCCコマンドは、トレースフラグが有効であることを確認するために何らかのリソースでチェックインする必要があると仮定すると、どこに到達しますか?リストを保持する.dllまたは他のシステムファイルはありますか? 私はこの質問が広範に及ぶことを知っていますが、これに拍車をかけたのは、説明された効果を持たない2016年の新機能とともに特定の意図された動作を備えたトレースフラグについて読んでいたことです。私の最初の考えは、おそらく7129が7219になるように、数が何らかの形で転置されたと考えていました。たとえば、7000-7999の範囲内で有効なトレースフラグのリストを取得して、順列を探すことでした。DBCC TRACEONフラグと起動パラメータの両方としてそれらすべてをテストすることは、機能の動作に対する結果のテストと組み合わせると非常に面倒です。

3
インデックスを作成するよりも統計を作成したほうがよいのはいつですか?
私は上の情報をたくさん発見したものを STATISTICS、次のとおりです。彼らは、彼らがクエリやインデックスから手動または自動で作成する方法を、維持、およびようにしていますか。しかし、私は見つけることができなかったいかなるに関するガイダンスや「ベストプラクティス」の情報それらを作成するには:インデックスからではなく、手動で作成されたSTATISTICSオブジェクトのほうがどのような状況にメリットがあるか。私は手動でフィルターされた統計を作成し、パーティション化されたテーブルのクエリを支援しました(インデックス用に作成された統計はテーブル全体をカバーし、パーティションごとではないためです-brillaint!)インデックスの詳細を必要とせず、インデックスを維持したり、ブロック/デッドロックの可能性を高めたりするコストも必要ありません。 @JonathanFiteはコメントで、インデックスと統計の違いについて言及しました。 インデックスは、テーブル自体とは異なる方法でソートされたルックアップを作成することにより、SQLがデータをすばやく見つけるのに役立ちます。統計は、クエリを満たすために必要なメモリ/労力をSQLが判断するのに役立ちます。 主に質問を明確にするのに役立つからです。 どのようにこのことを知っている(または上の任意の他の技術的な情報はないものを Sとどのように行動しての性質に関連sをSTATISTICS)助けを決定するとき選択するCREATE STATISTICS以上CREATE INDEXの関連が作成されますインデックスを作成するときに、特に、STATISTICSオブジェクトを?どのようなシナリオでは、よりよい持っていることによって提供されることになるだけ STATISTICS情報をしていないインデックスを持ちますか? 可能な場合、STATISTICSオブジェクトがに比べてより適しているシナリオの実用例があると、非常に便利INDEXです。 私は視覚的な学習者/思考者であるため、最適なタイミングを判断するのに役立つ可能性のある手段として、STATISTICSとINDEXes の違いを並べて確認すると役立つと思いSTATISTICSました。 Thingy PROs CONs ------- ---------- ------------------- INDEX * Can help sorts. * Takes up space. * Contains data (can * Needs to be maintained (extra I/O). "cover" a query). * More chances for blocking / dead-locks. STATISTICS …

2
エラー:作成するスキーマが選択されていません
私はAmazon RDSのpostgresqlデータベースに取り組んでいますが、パブリックスキーマに何らかの問題があったことがわかっています(削除された可能性があります)。しかし、明らかにスキーマは存在し、とにかく問題は解決されません。次に、新しく作成された空のデータベースとのサンプルセッションを示します。 mydb=> CREATE TABLE distributors ( mydb(> did integer, mydb(> name varchar(40) UNIQUE mydb(> ); ERROR: no schema has been selected to create in mydb=> show search_path; search_path ---------------- "$user",public (1 row) mydb=> create schema public; ERROR: schema "public" already exists ヒントはありますか?何を探すべきですか? 解決しました。 ダニエルヴェリテの回答のおかげで、私は次のように解決しました。 grant usage on schema public …

6
Management Studio System.OutOfMemoryException
Microsoft SQL Server 2012を使用していて、Management Studio内で単純なクエリを実行しようとしています。次のエラーが表示されます(SSMSで、サーバーで実行中): バッチの実行中にエラーが発生しました。エラーメッセージは次のとおりです。タイプ 'System.OutOfMemoryException'の例外がスローされました。 システムには24GBのRAMがインストールされていますが、タスクマネージャーで見ると、sqlservr.exeプロセスは2.9GBしか使用していません。 RAMの使用を制限している設定はどこかにありますか?

1
データベースの単純または完全復旧モデル?
いつ完全復旧モデルを使用する必要があり、いつデータベースの単純復旧モデルを使用すればよいですか? デフォルトであるため、常に完全復旧モデルを使用しましたが、今日このエラーが発生しました: SQL Server用Microsoft OLE DBプロバイダー(0x80040E14)データベース 'DATABASE NAME'のトランザクションログがいっぱいです。ログ内のスペースを再利用できない理由を確認するには、sys.databasesのlog_reuse_wait_desc列を参照してください。 特定のデータベースは、実際にはサーバー上で最小かつ最も非アクティブなデータベースの1つであるため、他のデータベースではなく、このデータベースでログがいっぱいになる方法がわかりません。 ログを圧縮してデータベースに再度アクセスできるようにするには、次のコマンドを使用して、復旧モデルをFULLからSIMPLEに変更し、論理ファイルログを圧縮しました alter database myDbName SET recovery simple go dbcc shrinkfile('LOG FILE LOGICAL NAME', 100) go それは助けたが、今私が理解する必要がなぜ、それが助けHOWこの状況が開始され、どのように将来的にはこれを防ぐには? 編集: 毎晩1時に、サーバー上のすべてのデータベースのスクリプト化されたバックアップを行っています。これは、31行のスクリプトで行われています。最も重要な部分は set @Filename = 'D:\backup\' + convert(varchar, getDate(), 112) + ' - ' + @DBName + '.bak' set @Description = 'Full backup of database …

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