データベース管理者

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

5
PostgreSQLで非常に遅いDELETE、回避策?
PostgreSQL 9.2には、約70個のテーブルを持つメインスキーマと、それぞれ30個のテーブルからなる可変構造のクライアントごとのスキーマを持つデータベースがあります。クライアントスキーマには、メインスキーマを参照する外部キーがあり、その逆はありません。 以前のバージョンから取得した実際のデータをデータベースに入力し始めたところです。メインスキーマの非常に中央のテーブルで一括削除を行う必要があったときに、DBは約1.5 GBに達しました(数週間で数十GBに達すると予想されています)。関係するすべての外部キーは、DELETE CASCADEでマークされます。 これに長い時間がかかることは驚きではありませんでしたが、12時間後には、最初からやり直してDBを削除し、移行を再開する方が良いことが明らかになりました。しかし、後でDBが稼働し、さらに大きくなったときにこの操作を繰り返す必要がある場合はどうなりますか?より高速な代替方法はありますか? 中央テーブルから最も遠いテーブルから開始し、テーブルごとに依存する行を削除する依存テーブルを参照するスクリプトを書いたら、もっと速くなるでしょうか? 重要な詳細は、いくつかのテーブルにトリガーがあることです。

7
SQL Server 2005で最小の複数列を取得する最も効率的な方法は何ですか?
6列の最小値を取得したい状況です。 これを達成するためにこれまでに3つの方法を見つけましたが、これらの方法のパフォーマンスに懸念があり、どちらがパフォーマンスに優れているかを知りたいと思います。 最初の方法は、大きなcaseステートメントを使用することです。上記のリンクの例に基づいて、3列の例を次に示します。6つの列を見るので、私のcaseステートメントはもっと長くなります。 Select Id, Case When Col1 <= Col2 And Col1 <= Col3 Then Col1 When Col2 <= Col3 Then Col2 Else Col3 End As TheMin From MyTable 2番目のオプションはUNION、複数の選択ステートメントで演算子を使用することです。Idパラメーターを受け入れるUDFにこれを配置します。 select Id, dbo.GetMinimumFromMyTable(Id) from MyTable そして select min(col) from ( select col1 [col] from MyTable where Id = @id union …

1
巨大なpostgresテーブルを複製するには?
巨大なpostgresテーブルがあります(10GBのデータ-160Mレコード)。テーブルは静的であり、実行された書き込み操作はありません。複製し、書き込みを実行し、インデックスを再作成し、単一の高速トランザクションで古いトランザクションを削除し、新しいトランザクションの名前を元の名前に変更したい。 このような巨大なテーブルを複製する最速の方法は何ですか?
29 postgresql 

2
計算列のスカラーUDFが並列処理を禁止しないようにする方法はありますか?
SQL ServerのScalar UDFの危険性について多くのことが書かれています。カジュアル検索では、大量の結果が返されます。 ただし、スカラーUDFが唯一のオプションである場所がいくつかあります。 例として:XMLを扱う場合:XQueryは計算列定義として使用できません。Microsoftによって文書化された1つのオプションは、Scalar UDFを使用してXQueryをScalar UDFにカプセル化し、それを計算列で使用することです。 これにはさまざまな効果があり、いくつかの回避策があります。 テーブルが照会されたときに行ごとに実行します テーブルに対するすべてのクエリを強制的にシリアルに実行します 関数をスキーマバインドし、計算列を永続化するか、インデックスを作成することで、行ごとの実行を回避できます。これらのメソッドはいずれも、スカラーUDFが参照されていない場合でも、テーブルにヒットするクエリの強制シリアル化を防ぐことはできません。 それを行う既知の方法はありますか?

1
SQL Server Management Studio 2012をアンインストールする方法は?[閉まっている]
SQL Server Management Studio 2012をアンインストールする方法は? ControlPanelの「プログラムのアンインストールまたは変更」(Windows 7 Profの場合)には次のエントリが表示されます。 一方、インターネットの検索結果は常に言う:「のMicrosoft SQL Server 2005をクリックし、[変更]をクリックします」 更新(ショーンメルトンのコメントをコメント): "" "Microsoft SQL Server 2012(64-bit)"-> Uninstall / Changeを選択すると、次のことがわかります。 [削除]、[サポートルールのセットアップ]を選択した後、SSMSまたは継続オプションなしで:

1
以前のバージョンよりもSQL Server 2016を優先する客観的な理由は何ですか?
Microsoftは、SQL Server 2005または2008の日以降、SQL Serverのバージョンアップグレードをより頻繁に行うため、多くの企業は、アップグレードが「必須」であるかどうかを判断するのが難しいと感じています。アップグレードが「必要なもの」である場合 以前のバージョンよりもSQL Serverのさまざまな新しいリリースを好む理由について尋ねるいくつかの以前の質問の精神で、企業が以前のバージョンからSQL Server 2016へのアップグレードを検討する客観的な技術的またはビジネス上の理由は何ですか? SQL Server 2014などのリリース? (この質問 SQL Server 2008の、またはそれに比べてSQL Server 2012の程度、この1 SQL Server 2005に比べてSQL Server 2012の程度それらへの回答ものためにここに理由の一部に拡大し、この質問の精神の例として、気にしています。 SQL Server 2008またはSQL Server 2005で始まる企業)



5
削除/挿入時の同じ排他的にロックされたクラスター化キー(NHibernateを使用)でのSQLデッドロック
私はこのデッドロックの問題にかなりの数日取り組んでおり、私が何をしようとも、何らかの形で持続します。 まず、一般的な前提:1対多の関係でVisitItemsを使用した訪問があります。 VisitItems関連情報: CREATE TABLE [BAR].[VisitItems] ( [Id] INT IDENTITY (1, 1) NOT NULL, [VisitType] INT NOT NULL, [FeeRateType] INT NOT NULL, [Amount] DECIMAL (18, 2) NOT NULL, [GST] DECIMAL (18, 2) NOT NULL, [Quantity] INT NOT NULL, [Total] DECIMAL (18, 2) NOT NULL, [ServiceFeeType] INT NOT NULL, [ServiceText] NVARCHAR …


2
SQL Serverインスタンスのルートディレクトリを別のドライブに置くと便利ですか?
SQL Serverのインストール時にデフォルトのパスの多くを変更できることはわかっています。一般的に、インストールを行うと、データフォルダーとログフォルダーを別々のドライブ(通常はDとE)に変更しますが、最近、デフォルト以外のインスタンス名を実行し、mdfファイルとともにDドライブ上にあるインスタンスルートディレクトリを設定しているプレインストールマシン。これは、通常はフォルダーとデータベースファイルだけが含まれる比較的クリーンなドライブに、SQL Serverバイナリも完全にインストールできるようになったことを意味します。 すなわち、私は今次のものを持っています: C:\Program Files\Microsoft SQL Server\ --Base Install D:\Microsoft SQL Server\MSSQL10_50.MyInstance --Instance Binaries D:\Microsoft SQL Server\MSSQL10_50.MyInstance\MSSQL\DATA --Data Files E:\Microsoft SQL Server\MSSQL10_50.MyInstance\MSSQL\LOGS --Log Files 通常、私は次のようなもので実行します: C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\ --Base Install & Default Instance Binaries D:\MSSQL\DATA --Data Files E:\MSSQL\LOGS --Log Files 別のインスタンスバイナリフォルダーが必要な理由は理解できますが、これらすべてのバイナリを別のドライブに配置することがなぜ役立つのかわかりません。 なぜそれが妥当なことなのか、誰にも教えてもらえますか?それとも、まったく違いはありませんか?私にはそれはひどく乱雑に見える...

2
expdpおよびimpdpコマンドを使用してデータを転送する方法は?
私はOracleの初心者で、すべてのデータとメタデータをOracleデータベース内のあるスキーマから別のスキーマに転送することを意図しています。データポンプexpdpとimpdpコマンドを使用する予定です。これに関して質問があります: ユーザーなしでターゲットスキーマを作成できますか、または最初にユーザーを作成する必要がありますか(スキーマも作成されます)。 SYS(sysdba)アカウントを使用expdpしてimpdpコマンドを実行できますか?それは好ましい方法ですか? このステートメントは、スキーマからすべてのオブジェクト(データとメタデータ)を取得し、これらを別のスキーマに移動しますか? expdp \"/ as sysdba\" schemas=<schemaname> directory=dumpdir dumpfile=<schemaname>.dmp logfile=expdp_<schemaname>.log ターゲットスキーマは、impdpコマンド実行後のソーススキーマの正確なコピーですか?
29 oracle  schema  export  impdp  expdp 

2
GROUP BYステートメントのワイルドカードが機能しないのはなぜですか?
次のSQLステートメントを機能させようとしていますが、構文エラーが発生します。 SELECT A.*, COUNT(B.foo) FROM TABLE1 A LEFT JOIN TABLE2 B ON A.PKey = B.FKey GROUP BY A.* ここで、Aは40列の幅の広いテーブルであり、可能であればGROUP BY句に各列名をリストしないようにします。同様のクエリを実行する必要のあるこのようなテーブルが多数あるため、ストアドプロシージャを作成する必要があります。これにアプローチする最良の方法は何ですか? MS SQL Server 2008を使用しています。

4
ユーザー 'root' @ '%'のアクセスは拒否されました
私はMySQLでrootユーザーにうまくアクセスしていました。しかし、最近、私はもうできません。 私はうまくログインできます: mysql -u root -p ログイン後のmysqlステータスは次のとおりです。 mysql> status -------------- mysql Ver 14.14 Distrib 5.5.28, for debian-linux-gnu (i686) using readline 6.2 Connection id: 37 Current database: Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.5.28-0ubuntu0.12.04.3 (Ubuntu) Protocol version: 10 Connection: …

4
大量のRAMに対するpostgresqlのチューニング
(ハードウェアの点で)2つの同一のサーバーがあり、どちらもWindows Server 2008 r2の標準インストールであり、最小限のソフトウェアがインストールされています(基本的には私のコードとjvmなどの必要なもの)。 1台のサーバーで、2台目のサーバーpostgresql 9.1でSQL Server 2005を実行しています。これら2台のサーバーでのパフォーマンスの違いは驚異的であり、上司への最初の「SQLサーバーライセンスの代金を支払う代わりにpostgresqlを使用しましょう」と後悔しています。同じコマンドで30秒と15分という違いを話しているのですが、これはこの1つのコマンドだけでなく、私が投げるクエリやコマンドでもあります。両方ともほぼ同じデータを持ち(レコードは異なる順序で挿入されました)、両方のデータベースはまったく同じ構造/インデックスなどを持っています。 しかし、それは単なるパフォーマンスチューニングの問題だと思います。実は、SQLサーバーはサーバー上で32ギガバイトすべてのRAMを使用していますが、postgreslは何も使用しておらず、ギグよりも確実に少ないのですが、実際には詳細に把握していません。 postgresqlで20ギガバイト以上のRAMを使用するにはどうすればよいですか?これらのサーバーはこのデータベース専用に構築されているため、データベースとサポートプロセスで使用されていないラムは無駄になります。

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