データベース管理者

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


1
Debian / UbuntuへのPgAdmin 4のインストール[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、データベース管理者のStack Exchangeのトピックになるようにします。 閉じた3年前。 PgAdmin 4 1.0がリリースされたばかりですが、Linuxのダウンロードページには、yumインストーラーへのリンクしかありません。 debインストーラーを作成する計画があるかどうかは誰でも知っていますか?または、すでにある場合は?

1
SQL Server 2016のSUBSTRING()を含む述語の見積もりの​​変更?
SUBSTRING()または他の文字列関数を含む述語のカーディナリティを推定する方法に関するSQL Server 2016の変更に関するドキュメントまたは調査はありますか? 私が尋ねている理由は、互換モード130でパフォーマンスが低下したクエリを見て、SUBSTRING()の呼び出しを含むWHERE句に一致する行数の推定値の変更に関係した理由です。クエリの書き換えで問題を修正しましたが、SQL Server 2016のこの領域の変更に関するドキュメントを誰かが知っているかどうか疑問に思っています。 デモコードは次のとおりです。このテストケースでは推定値は非常に近いものですが、精度はデータによって異なります。 テストケースでは、compatレベル120ではSQL Serverは推定にヒストグラムを使用しているように見えますが、compatレベル130ではSQL Serverはテーブルの10%が固定されていると仮定しています。 CREATE DATABASE MyStringTestDB; GO USE MyStringTestDB; GO DROP TABLE IF EXISTS dbo.StringTest; CREATE TABLE dbo.StringTest ( [TheString] varchar(15) ); GO INSERT INTO dbo.StringTest VALUES ( 'Y5_CLV' ); INSERT INTO dbo.StringTest VALUES ( 'Y5_EG3' ); INSERT INTO dbo.StringTest VALUES ( 'ZY_NE' …

4
テーブル内のNULL値の自己比較
次のような不思議なt-sqlの振る舞いについて私はいつも困惑しています -- Create table t and insert values. use tempdb CREATE TABLE dbo.t (a INT NULL); -- insert 3 values INSERT INTO dbo.t values (NULL),(0),(1); GO set ansi_nulls off -- purposely turn off, so we can allow NULL comparison, such as null = null go -- expect 3 rows returned …

4
すべての行を返すSELECT TOPで使用できる値はありますか?
エンドユーザーがクエリによって返される行数を定義できるようにします(SELECT TOP(@x))。すべての行が返される場所に入力できる値はありますか?または、すべての行を返す必要がある場合、TOP(@x)なしでクエリを動的に作成する必要がありますか? SQL Server 2012を使用しています。
13 sql-server 

2
SELECT TOP 1はクエリのパフォーマンスに悪影響を与えます。これを克服するdbaアクセス可能な方法はありますか?
運用アプリケーション(SQL Server 2014 Standardと通信するC#)には、以下のようなクエリがあります。ほとんどの場合、ミリ秒単位で実行されます。ただし、(特定の値の場合@Id)場合によっては非常に時間がかかり、1分ほどかかります。これはアプリのタイムアウトよりも長いため、ユーザーにとってアプリは失敗します。 "goes nuts"の場合、返される結果セットは他のすべてではないが多くの場合にそうであるように、正しく空です。 幸いなことに、これは実稼働環境と開発環境の両方で再現可能です。 開発者は、クエリから「TOP 1」を削除し、アプリが結果セットの余分な行を消費することを確認して、パフォーマンスの問題を解決すると言います。 クエリプランナーは、インデックスTOP 1が存在する場合はインデックスを提案しません。(開発中)。 クエリの変更とアプリの修正が進行中です。ロールアウトには時間がかかります。 私の質問:アプリが新しいクエリで変更される前に、この問題を克服するために、運用SQL Serverインスタンスをチューニングまたは微調整するDBAアクセス可能な方法はありますか? SELECT TOP 1 subscription_id FROM subscription AS sub JOIN billing_info AS bi ON bi.billing_info_id = sub.billing_info_id JOIN person_group AS apg ON apg.person_id = bi.person_id JOIN pplan ON pplan.plan_id = sub.plan_id JOIN product ON product.product_id = [plan].product_id …

7
このツールの名前を知っている人はいますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、データベース管理者のStack Exchangeのトピックになるようにします。 閉じた3年前。 Microsoft SQL Server 2012 Internals(2013、0735658560)の表紙にある赤いものが何であるかを理解しようと試みている間、生産的な作業は停止しました。何らかの外科的または電気的なツールだと思いますか? 考え?
13 sql-server 

3
SQL Serverの8 KByteデータページから512バイトが使用されていません
次の表を作成しました。 CREATE TABLE dbo.TestStructure ( id INT NOT NULL, filler1 CHAR(36) NOT NULL, filler2 CHAR(216) NOT NULL ); 次に、クラスター化インデックスを作成しました。 CREATE CLUSTERED INDEX idx_cl_id ON dbo.TestStructure(id); 次に、各サイズが256バイトである30行(テーブル宣言に基づいて)を入力しました。 DECLARE @i AS int = 0; WHILE @i < 30 BEGIN SET @i = @i + 1; INSERT INTO dbo.TestStructure (id, filler1, filler2) VALUES …

5
SQL Serverには、実行中のストアドプロシージャに渡されるパラメーターの値を決定する方法があります
実行中のストアドプロシージャを決定する1つの方法は、次のような「動的管理」メソッドを使用することです。 SELECT sqlText.Text, req.* FROM sys.dm_exec_requests req OUTER APPLY sys.dm_exec_sql_text(req.sql_handle) AS sqltext ただし、これはストアドプロシージャのcreateステートメントのテキストのみを表示します。例えば: CREATE PROCEDURE IMaProcedure @id int AS SELECT * FROM AllTheThings Where id = @id 理想的には、問題のあるパラメーターの特定のセットに対して非常に長く実行する原因となっている実行中のプロシージャーのパラメーターを確認したいと思います。 それを行う方法はありますか?(この質問では、 Aaron BertrandがDBCC InputBufferについて言及していますが、この問題には適切ではないと思います。)

1
削除ステートメントで使用されないクラスター化インデックス
次のように定義されたSQL Serverテーブルがあります CREATE TABLE [dbo].[Production_Detail] ( [Id] [bigint] NOT NULL DEFAULT (NEXT VALUE FOR [dbo].[Production_Detail_Seq]), [Meta_Data_ID] INT NOT NULL , [Production_Detail_Time] DATETIME NOT NULL, [Production_Detail_Time_Local] DATETIME NOT NULL, [Production_Detail_Value] FLOAT NULL, [IntegratedDM] BIT NOT NULL DEFAULT 0, [DailyIntegratedDM] BIT NOT NULL DEFAULT 0, [InsertedDate] DateTime NOT NULL, [ModifiedDate] DateTime NOT …

1
行を更新する必要がある場合、データベースは削除と挿入を行いますか?
そこで、今日、教授は、データベースが更新を行う必要がある場合、内部で(低レベルで)削除し、更新されたフィールドで挿入することを教えてくれました。それから彼は、これはすべてのデータベースで行われたものであると言い、それから私はそれが意味がないと思ったが、自分の立場をサポートするのに十分なリソースがなかったと話し始めました。彼は多くのことを知っているようですが、なぜdbsがそうするのか理解できません。 つまり、フィールドを更新し、その行にさらにスペースが必要な場合は、物理的に行を削除し、新しいデータで最後に配置することを知っています。しかし、たとえば使用するスペースを減らした場合、なぜ削除して最後に再挿入するのでしょうか? これは本当ですか?利点は何ですか?

2
欠落している日付に、グループの以前に入力された日付のデータ値を入力します
部門間で転送される画像ヘルプデスクチケット。チケットが開いている日ごとに、各チケットの1日の終わりに部門が何であるかを知りたい。テーブルには、営業日ごとの各チケットの最後の部門が含まれ、部門の変更がある(チケットが最初に開かれた日付と閉じられた日付の行を含む)。データテーブルは次のようになります。 CREATE TABLE TicketAssigment ( TicketId INT NOT NULL, AssignedDate DATE NOT NULL, DepartmentId INT NOT NULL); 必要なのは、Dateで順序付けられた前のTicketAssigment行のDepartmentIdを使用して、各TicketIdの欠落している日付を入力することです。 このようなTicketAssigment行がある場合: 1, '1/1/2016', 123 -- Opened 1, '1,4,2016', 456 -- Transferred and closed 2, '1/1/2016', 25 -- Opened 2, '1/2/2016', 52 -- Transferred 2, '1/4/2016', 25 -- Transferred and closed この出力が必要です: 1, …

3
DMV sys.dm_exec_requestsのtotal_elapsed_timeは完全に不正確ですか?
SQL Server 2012を実行していて、DMVを使用して監視するためにいくつかのクエリをまとめようとしています。ただし、DMV のtotal_elapsed_timeフィールドをsys.dm_exec_requests見ると、数字は途方に暮れています。以下に例を示します。 SELECT session_id, RunTime = CURRENT_TIMESTAMP, start_time, total_elapsed_time FROM sys.dm_exec_requests WHERE session_id = 284; session_id RunTime start_time total_elapsed_time 284 2016-04-07 16:14:03.690 2016-04-07 16:08:14.587 1419976 私の計算*では、経過時間は約1,419,976ではなく、約349,103です。それは4倍以上ずれています。 *現在の時刻とstart_timeの差(ミリ秒単位)から、つまり SELECT DATEDIFF(MILLISECOND, '2016-04-07T16:08:14.587', '2016-04-07T16:14:03.690'); サーバー情報は次のとおりです。 SELECT @@VERSION; Microsoft SQL Server 2012 - 11.0.5592.0 (X64) Apr 17 2015 15:18:46 Copyright (c) Microsoft …

1
AWS RDS postgresデータベースのメジャーバージョンをシームレスにアップグレードするにはどうすればよいですか?
今朝、私はAWS RDS上のPostgreSQLデータベースのアップグレードに関与しました。バージョン9.3.3からバージョン9.4.4に移行したかったのです。ステージングデータベースでアップグレードを「テスト」しましたが、ステージングデータベースははるかに小さく、マルチAZを使用しません。このテストはかなり不十分であることが判明しました。 運用データベースではマルチAZを使用しています。過去にマイナーバージョンアップグレードを行ったことがあります。その場合、RDSは最初にスタンバイをアップグレードしてからマスターに昇格します。したがって、フェイルオーバー中に発生するダウンタイムは最大60秒です。 メジャーバージョンのアップグレードでも同じことが起こると想定していましたが、それは間違いです。 セットアップに関する詳細: db.m3.large プロビジョンドIOPS(SSD) 300 GBのストレージ、そのうち139 GBが使用されます RDS OSのアップグレードは未解決であり、ダウンタイムを最小限に抑えるためにこのアップグレードをバッチ処理したかった アップグレードの実行中に記録されたRDSイベントは次のとおりです。 データベースCPUは08:44から10:27の間に最大になりました。この時間の多くは、アップグレード前およびアップグレード後のスナップショットを取るRDSによって占有されているように見えました。 AWSのドキュメントには、それらを読んでから、我々のアプローチの明らかな欠陥は、我々はのコピーを作成しなかったことであることは明らかであるものの、そのような影響を警告していない生産マルチAZセットアップでデータベースをし、としてそれをアップグレードしよう試運転 一般に、RDSが何をしていて、どれくらいの時間がかかる可能性があるかについて、RDSがほとんど情報を提供しなかったため、非常にイライラしていました。(繰り返しになりますが、試用版を実行すると助かります...) それとは別に、この事件から学びたいので、ここに質問があります: RDSでメジャーバージョンアップグレードを行う場合、この種のことは正常ですか? 将来、最小のダウンタイムでメジャーバージョンアップグレードを行いたい場合、どうすればよいでしょうか?レプリケーションを使用してシームレスにするための賢い方法はありますか?

2
一括挿入時間の大きなばらつき
そのため、ステージングテーブルからデータを取得してデータマートに移動するための単純な一括挿入プロセスがあります。 このプロセスは、「バッチあたりの行数」のデフォルト設定を持つ単純なデータフロータスクであり、オプションは「tablock」および「チェック制約なし」です。 テーブルはかなり大きいです。データサイズが201GBでインデックススペースが49GBの587,162,986。テーブルのクラスター化インデックスは次のとおりです。 CREATE CLUSTERED INDEX ImageData ON dbo.ImageData ( DOC_ID ASC, ACCT_NUM ASC, MasterID ASC ) 主キーは次のとおりです。 ALTER TABLE dbo.ImageData ADD CONSTRAINT ImageData PRIMARY KEY NONCLUSTERED ( ImageID ASC, DT_CRTE_DOC ASC ) 現在、BULK INSERTSSIS経由の実行速度が非常に遅いという問題が発生しています。100万行を挿入するのに1時間。テーブルに入力するクエリは既にソートされており、入力するクエリの実行には1分もかかりません。 プロセスの実行中に、5〜20秒かかり、次の待機タイプを示すBULK挿入を待機しているクエリを確認できます。 PAGEIOLATCH_EX。プロセスは、一度にINSERT約1000行までしか実行できません。 昨日、このプロセスをUAT環境に対してテストしているときに、同じ問題に直面していました。私はプロセスを数回実行し、この遅い挿入の根本原因を特定しようとしました。その後、突然5分未満で実行が開始されました。それで、私はそれをさらに数回実行しましたが、すべて同じ結果になりました。また、5秒以上待機していた一括挿入の数は、数百から約4に減少しました。 今、これは私たちが活動を大幅に落としてしまったというわけではないので困惑しています。 期間中のCPUが低い。 遅いときは、ディスクでの待機が少ないように見えます。 プロセスが5分未満で実行されていた時間枠の間に、実際にはディスク遅延が増加します。 また、このプロセスの実行が不十分な間、IOはずっと低くなりました。 すでに確認しましたが、ファイルが70%しかいっぱいになっていないため、ファイルの増加はありませんでした。ログファイルの残りは50%です。DBはシンプルリカバリモードです。DBには1つのファイルグループしかありませんが、4つのファイルに分散しています。 私が疑問に思っていることA:なぜ、これらの一括挿入でこんなに長い待ち時間が見られたのか。B:実行速度を上げるためにどのような魔法が発生しましたか? サイドノート。今日もがらくたのように走ります。 現在パーティション化されているUPDATE。しかし、それはせいぜい愚かな方法で行われます。 CREATE PARTITION SCHEME …

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