データベース管理者

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

3
通常のVACUUM ANALYZEは9.1でも引き続き推奨されますか?
UbuntuでPostgreSQL 9.1を使用しています。スケジュールはVACUUM ANALYZEまだ推奨されていますか、それとも自動バキュームですべてのニーズに対応できますか? 答えが「依存する」の場合: 大きなデータベースがあります(30 GiBの圧縮ダンプサイズ、200 GiBのデータディレクトリ) データベースにETLを実行し、週に300万行近くをインポートします 最も頻繁に変更されるテーブルはすべてマスターテーブルから継承され、マスターテーブルにはデータがありません(データは週ごとに分割されます) 時間ごとのロールアップを作成し、そこから毎日、毎週、毎月のレポートを作成します スケジュールVACUUM ANALYZEがレポートに影響しているので、私は尋ねています。5時間以上実行されますが、通常のデータベースインポートに影響を与えていたため、今週2回停止する必要がありました。check_postgresデータベースの大きな膨張を報告しないため、それは実際には問題ではありません。 ドキュメントから、autovacuumはトランザクションIDのラップアラウンドも処理する必要があります。質問が立っています:私はまだ必要VACUUM ANALYZEですか?
38 postgresql  etl  vacuum 

3
データベース設計:新しいテーブルと新しい列
(これはStackOverflowからここに再投稿することが提案されました) 現在、テーブルがあり、新しいデータ列の追加を開始する必要があります。すべてのレコードに(新しいデータ列を追加した後に新しいデータを使用する場合でも)データがあるわけではありません。だから、これは実際にはいくつかのデータ行の拡張であり、すべての行に適用できないため、これが新しいテーブルに適しているのだろうかと思っています。 言い換えると、これらの新しいデータ要素には多くの未使用の列があるため、新しいテーブルにより適しているようです。 最初の表はページビューの記録です(現在200万件の記録) -id - IPアドレス -視聴回数 -created_atタイムスタンプ -日付 すべてのIPアドレスについて、1日ごとに記録が作成され、1日あたりの時間ビューに連続したページビューが追加されます 追加のフィールドは、起点の追跡用です(つまり、google analytics source / medium / campaign) すべての訪問がその情報を持っているわけではありません。Imは、行の約10%にデータがあると想定します(通常は最初の訪問時にのみ属性付けされるため) データの主な用途は、人々の出身地を特定することです。これは、より頻繁に使用される可能性があります(それは、単一のテーブルに役立つようです) フィードバックに感謝-必要に応じてさらに追加できます

2
マルチコアとMySQLパフォーマンス
RAMの重要性は確立された事実ですが、MySQLによるCPUの使用に関しては、コアとマルチスレッドの重要性に関する資料はほとんどありません。MySQLを4コア対6コア対8コアなどで実行することの違いについて話しています。 ストレージエンジンによってCPUの使用方法は異なりますか?


4
インデックスに列を含めるための厳格なルール
非クラスター化インデックスに含める列とその順序を決定するための厳格なルールはありますか?私はちょうどこの投稿https://stackoverflow.com/questions/1307990/why-use-the-include-clause-when-creating-an-index を読んでいて、次のクエリでそれを見つけました: SELECT EmployeeID, DepartmentID, LastName FROM Employee WHERE DepartmentID = 5 ポスターは、次のようなインデックスを作成することを提案しました。 CREATE NONCLUSTERED INDEX NC_EmpDep ON Employee(EmployeeID, DepartmentID) INCLUDE (Lastname) ここに、なぜこのようなインデックスを作成できないのかという質問があります CREATE NONCLUSTERED INDEX NC_EmpDep ON Employee( EmployeeID, DepartmentID, LastName) または CREATE NONCLUSTERED INDEX NC_EmpDep ON Employee( EmployeeID, LastName) INCLUDE (DepartmentID) そして、LastName列を含めることを決定するためにポスターを導くものは何ですか。他の列はなぜですか?そして、列をどの順序で保持するかをどのように決定するのですか?

6
MySQLでは、WHERE句の列の順序はクエリのパフォーマンスに影響しますか?
結果セットが大きくなる可能性がある特定のデータベースクエリでパフォーマンスの問題が発生しています。 問題のクエリAND、WHERE句に3つの 句の順序は重要ですか? 同様に、ASI_EVENT_TIME句を最初に配置すると(すべての句から結果のほとんどが削除されるため)。 それはクエリの実行時間を改善しますか? クエリ: SELECT DISTINCT activity_seismo_info.* FROM `activity_seismo_info` WHERE activity_seismo_info.ASI_ACTIVITY_ID IS NOT NULL AND activity_seismo_info.ASI_SEISMO_ID IN (43,44,...,259) AND ( activity_seismo_info.ASI_EVENT_TIME>='2011-03-10 00:00:00' AND activity_seismo_info.ASI_EVENT_TIME<='2011-03-17 23:59:59' ) ORDER BY activity_seismo_info.ASI_EVENT_TIME DESC クエリの説明: +----+-------------+---------+-------+---------------------------+--------------+---------+------+-------+-----------------------------+ | id | select_type | table | type | possible_keys | key | key_len | ref …

6
サーバー上のすべてのDBに対してSQLを実行する方法
問題を診断するために、単一のサーバー上の複数のデータベースに対して実行するいくつかの標準SQLがあります。 select so.name, so.type, MAX(case when sc.text like '%remote%' then '' ELSE 'N' END) AS Relevant, @@ServerName as Server, DB_Name() as DBName from sysobjects so with (nolock) join syscomments sc with (nolock) on so.id = sc.id where (sc.text like '%emote%') group by so.name, so.type order by so.type, so.name 単一サーバー上のすべてのデータベースに対してこれを実行するにはどうすればよいですか?(手動で1つずつ接続して実行することに加えて)
38 sql-server 

4
専用のデータベースサーバーでは、OS用にどのくらいのメモリを予約しますか?
データベース機能専用の専用サーバーがあると仮定します。オペレーティングシステム用にどのくらいのメモリを確保する必要がありますか? これはおそらく、特定のOS、特定のデータベースソフトウェアなどによって多少異なると思います。しかし、メモリはデータベースのパフォーマンスにとって非常に重要であるため、ホストOSを枯渇させることなく、データベースに最大限の適切なレベルのメモリを持たせたいと考えています。 そう 手始めに良い経験則は何ですか? 行き過ぎて、ホストOSが何らかの形でデータベースに飢えているかどうかを判断するには、どのカウンタまたはパフォーマンスインジケータを調べる必要がありますか?


7
EXISTS(SELECT 1…)vs EXISTS(SELECT *…)どちらですか?
テーブル内の行の存在を確認する必要があるときはいつでも、次のような条件を常に書く傾向があります。 SELECT a, b, c FROM a_table WHERE EXISTS (SELECT * -- This is what I normally write FROM another_table WHERE another_table.b = a_table.b ) 他の人は次のように書きます: SELECT a, b, c FROM a_table WHERE EXISTS (SELECT 1 --- This nice '1' is what I have seen other people use FROM another_table …


1
MySQL Connectionsがスリープするのに「長すぎる」時間はどれくらいですか?
サーバーにログオンしてデータベースのステータスを確認しましたが、SHOW PROCESSLIST;非常に古いスリープ状態の接続が多数あることに気付きました。 接続を強制終了するまでの接続時​​間の制限はどのくらいですか? MySQL 5.0.51a-3ubuntu5.4で時間制限を設定するにはどうすればよいですか? 注意: PHP 5.2.xとsymfonyフレームワーク1.2を使用しています。
38 mysql  mysql-5 

5
(ファイル)データをPostgreSQL bytea列に挿入する方法は?
この質問はbytea v。oid v。blob v。大きなオブジェクトなどに関するものではありません。 主キーintegerフィールドとフィールドを含むテーブルがありbyteaます。byteaフィールドにデータを入力したいのですが。これはおそらく、いずれかのPL/言語で行うことができPL/Python、将来的にはこれを行うことを検討するかもしれません。 私はまだテストと実験を行っているので、「標準」のSQLステートメントを使用して(サーバー上の)ファイルからデータを挿入するだけです。サーバーに対する書き込み権限を持つ管理者のみが、希望する方法でデータを挿入できることを認識しています。ユーザーはbytea現在データを挿入しないので、この段階では心配していません。さまざまなStackExchangeサイト、PostgreSQLアーカイブ、およびインターネットを一般的に検索しましたが、答えが見つかりませんでした。 編集: 2008年からのこの議論は、私がやりたいことは不可能であることを意味します。byteaフィールドはどのように使用されますか? 編集: 2005年のこの類似の質問は未回答のままです。 解決済み: Webサイトのここで提供される詳細はpsycopg、Pythonで作成したソリューションの基礎を提供しました。byteaを使用して、バイナリデータを列に挿入することもできますPL/Python。「純粋な」SQLを使用してこれが可能かどうかはわかりません。


6
PostgreSQLでVALUESを使用して一時テーブルを作成する方法
私はPostgreSQLを学びWITH、デバッグ目的で通常のテーブルの代わりに使用できる一時テーブルまたは宣言を作成する方法を見つけようとしています。 CREATE TABLEのドキュメントを見VALUESて、クエリとして使用できると書かれていますが、例を示していません。VALUESリンクされている条項のドキュメントにも例はありませんか? そこで、次のような簡単なテストを作成しました。 DROP TABLE IF EXISTS lookup; CREATE TEMP TABLE lookup ( key integer, val numeric ) AS VALUES (0,-99999), (1,100); しかし、PostgreSQL(9.3)は、 「AS」またはその近くの構文エラー 私の質問は: 上記のステートメントを修正するにはどうすればよいですか? どのようにそれを使用するように適応させることができWITH blockますか? 前もって感謝します。

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