データベース管理者

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

4
すべて(1200万)のレコードを削除した後、SQL Serverの「空のテーブル」は遅いですか?
約150列のSQL Server 2008インスタンスがあります。以前、このテーブルに約1200万のエントリを追加しましたが、新しいデータセットに備えてテーブルをクリアしました。 しかし、空のテーブルの上に即座に実行されたかつてのようなことをコマンドcount(*)とselect top 1000では、SQL Management Studio今、実行に長い年月がかかります。 SELECT COUNT(*) FROM TABLE_NAME 0を返すのに11分以上かかりSELECT TOP 1000、空のテーブルを返すのに10分近くかかりました。 また、ハードドライブの空き領域が文字通り消えてしまったことにも気付きました(約100Gから20Gに減少)。間に発生した唯一のことは、私が実行した単一のクエリでした: DELETE FROM TABLE_NAME 世界では何が起こっているのですか?!?

4
空きディスク容量なしでVACUUM FULLを実行する必要があります
サーバー上のhdスペースの90%近くを占めるテーブルが1つあります。スペースを空けるために、いくつかの列をドロップすることにしました。しかし、スペースをOSに戻す必要があります。ただし、問題は、VACUUM FULLを実行し、テーブルのコピーを作成するための十分な空き領域がない場合にどうなるかわからないことです。 VACUUM FULLは使用すべきではないことを理解していますが、このシナリオでは最良の選択肢であると考えました。 任意のアイデアをいただければ幸いです。 PostgreSQL 9.0.6を使用しています


2
MySQLのベイクオフを適切に実行するにはどうすればよいですか?
Perconaサーバー、MariaDB、および場合によっては他のいくつかのフォークに対して、MySQLサーバーrpmのパフォーマンステスト(別名、ベイクオフ)を行います。この質問をすることで、適切なパフォーマンステストのセットアップの背後にある方法論をよりよく理解できることを望んでいます。私は実際のテストを実行するためにsysbenchを使用する予定でしたが、何に対してもオープンです。 テストの結果を1対1で比較し、RDBMSのみがバリアントであることを確認するには、どのような手順を実行する必要がありますか? どこから始めますか? 結果を評価するにはどうすればよいですか? どのようなアドバイスをいただけますか?

4
SQL Server照合順序を変更する方法
サーバー全体と特定のデータベースのSQL Server 2008 R2 Express Default Collat​​ionを変更するにはどうすればよいですか? SQL Server Management Studioのビジュアルインターフェイスを使用してそれを行う方法はありますか?[サーバーのプロパティ]ウィンドウ(および対応する[データベースのプロパティ]ウィンドウ)では、このプロパティは編集できません。

3
ストアドプロシージャとインラインSQL
ストアドプロシージャは、実行パスを通じて(アプリケーションのインラインSQLよりも)より効率的であることを知っています。しかし、押されたとき、私はその理由についてあまり知らない。 この技術的な理由を知りたい(後で誰かに説明できるように)。 誰も私が良い答えを策定するのを手伝ってくれますか?

2
複数行で先行するコンマなしでCOALESCEを使用する方法は?
私は次を達成しようとしています: California | Los Angeles, San Francisco, Sacramento Florida | Jacksonville, Miami 残念ながら、私は「ロサンゼルス、サンフランシスコ、サクラメント、ジャクソンビル、マイアミ」を取得しています STUFF関数を使用して目的の結果を達成できますが、COALESCEを使用してよりクリーンな方法があるかどうか疑問に思っていましたか? STATE | CITY California | San Francisco California | Los Angeles California | Sacramento Florida | Miami Florida | Jacksonville DECLARE @col NVARCHAR(MAX); SELECT @col= COALESCE(@col, '') + ',' + city FROM tbl where city = …
27 sql-server  t-sql 

3
配列メンバーの外部キー制約?
ジョブの役割を含むテーブルがあるとします: CREATE TABLE roles ( "role" character varying(80) NOT NULL, CONSTRAINT "role" PRIMARY KEY (role) ); さらにテーブル、ユーザーがあり、各行(特定のユーザー)が任意の数のジョブロールを持つことができるとします。 CREATE TABLE users ( username character varying(12) NOT NULL, roles character varying(80)[] NOT NULL, CONSTRAINT username PRIMARY KEY (username) ); の各メンバーがusers.roles[]roles.role に存在することを確認する必要があります。私が望むのは、users.roles[]ifがroles.roleを参照するような各メンバーの外部キー制約だと思われます。 これはpostgresでは不可能のようです。私はこれを間違った方法で見ていますか?これを処理するための推奨される「正しい」方法は何ですか?

2
Eager Spoolが示す問題
現在SQL Server 2008 R2で実行中 UPDATEステートメントのパフォーマンスを向上させようとしています。showplanにEager Spool操作がポップアップ表示されます。スプール操作についての私の理解は非常に基本的です-更新中にテーブルの一時ストレージを作成します。 また、熱心なスプールは実行時間を大幅に短縮する一方で、多くの場合、テーブル構造やクエリステートメントの根本的な問題を示しています。 私の質問は非常に簡単です:クエリプランにEager Spoolが表示された場合、最初に対処すべき問題は何ですか? システムのすべての部分を分析してパフォーマンスを向上させます。どこから始めればよいかについてのガイダンスを探しています。

1
SQL Serverの統計は物理的にどこに保存されますか?
クエリオプティマイザーが使用する統計情報は、SQL Serverデータベースファイルとバッファープール内に物理的に保存されていますか? より具体的には、DMVやDBCCを使用して統計で使用されるページを把握する方法はありますか? SQL Server 2008 InternalsとSQL Server Internals and Troubleshootingの両方の書籍を所有していますが、いずれも統計の物理構造については説明していません。もしそうなら、私はこの情報を見つけることができません。

1
日付によるインデックスの最適化
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 7年前に移行され ました。 PostgreSQL 9.0.8にはオブジェクトの大きなテーブル(1500万行以上)があり、そのために古いフィールドをクエリしたいと思います。 スケーラビリティと同時実行性を目的として、クエリを数百万で除算し、数日前の日付のupdated_atフィールドを使用してすべてのデータをフェッチしたい。 100万のIDで多くのインデックスとクエリを試しましたが、HerokuのRoninハードウェアで100秒未満のパフォーマンスを得ることができないようです。 これを可能な限り効率的にしようとしていない提案を探しています。 TRY#1 EXPLAIN ANALYZE SELECT count(*) FROM objects WHERE (date(updated_at)) < (date(now())-7) AND id >= 5000001 AND id < 6000001; INDEX USED: (date(updated_at),id) 268578.934 ms TRY#2 EXPLAIN ANALYZE SELECT count(*) FROM objects WHERE ((date(now()) - (date(updated_at)) > 7)) AND id >= …

2
psqlで複数のファイルを一度に入手する
psqlデータベーススキーマを設定するための単一のトランザクションとして、複数のSQLスクリプトを順番に実行したいと思います。これを行う最良の方法は何ですか?過去にpsql、他のファイルを含むマスタースクリプトを実行したことがありますが、このスクリプトの構文は覚えていません。
27 postgresql  psql 

5
ランダムな順序を取得する最良の方法は何ですか?
結果のレコードをランダムに並べるクエリがあります。クラスター化インデックスを使用するため、含まれていない場合order byは、インデックスの順序でレコードを返す可能性があります。ランダムな行順序を確保するにはどうすればよいですか? 私はそれが「真に」ランダムではない可能性が高いことを理解しています。擬似ランダムで十分です。
27 sql-server 

1
PostgreSQLの役割とユーザー、許可の付与
私は現在、新しいプロジェクトを手に入れたため、PostgreSQLとMySQLの違いを学んでいます。また、既存のソフトウェアをMySQLからPostgreSQLに移行するつもりです。私は実際に2つのコマンド(ユーザー/データベース/コマンドプロンプトなど)を比較してHTMLテーブルを作成し始めました。ここで答えを読んだ後role、グループとして使用されているように見えることに気付きました。MySQLので、私は二人のユーザ、基本的にパブリック(持ってDELETE、INSERT、SELECTおよびUPDATEアクセス権)と夫婦追加の権限を持つ管理者ユーザーを。 したがって、基本的にWindows 7コマンドプロンプト(ローカル開発のみ)で... ロールは、ユーザー、グループ、またはPostgreSQL固有の緩やかに使用される用語ですか? データベース内のすべてのテーブルに対して、特定のユーザーに特定の権限のみを付与するにはどうすればよいですか? データベース内のすべてのテーブルに対して、特定のユーザーにすべての権限を付与するにはどうすればよいですか? ユーザー権限を使用する場合、GRANTまたは使用する場合、ロールはユーザーと比較してREVOKEどうですか?
27 postgresql  users 

4
テーブルへの大きな変更には何が良いですか:毎回DELETEとINSERTまたは既存のUPDATEですか?
私は毎日1つのテーブルで約36Kレコードを変更する必要があるプロジェクトを作成しています。私は何が良くなるのだろうかと思っています: 行を削除して新しい行を挿入する、または 既存の行を更新する 私にとっては、すべての行を削除して新しい行を挿入する方が簡単ですが、これがテーブルとインデックスを断片化し、パフォーマンスに影響を与える場合、可能な限り更新を行い、必要な場合にのみ削除/挿入することをお勧めします。 これは毎晩のサービスになりますが、プロセス自体の速度を改善するつもりはありません。私は、このテーブルに対するクエリのパフォーマンスについて、私が既に8,900万件のレコードを持っている場合と、この夜間のプロセスがどのように影響するかについてより懸念しています。 この夜間のプロセスのために、レコードを削除/挿入するか、既存のレコードを更新する必要がありますか(可能な場合)?

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