sql >> データベース >  >> RDS >> PostgreSQL

PGEast、ハードウェアベンチマーク、およびPGパフォーマンスファーム

    今日は、今月のPostgreSQL Conference East 2010を開催するホテルの特別宿泊料金の締め切りです。会議のスポットの予約を先延ばしにしている場合は、明日から費用がかかります。

    私の講演はデータベースハードウェアベンチマークに関するもので、3月25日木曜日の初日の午後遅くに予定されています。 PGCon 2009でライブを行っているか、そこにあるビデオリンクを介してこのトークを見たことがある人は、同じスライドをドラッグしてもう一度話すかどうか疑問に思うかもしれません。そうではありません。講演の一般的な哲学(「誰も信用しない、独自のベンチマークを実行する」)は変わりませんが、提案された例とテストミックスは、ハードウェアの進歩、PostgreSQLの作業、およびその間の私自身の調査を反映するように更新されました。時間。特にIntelとAMDの状況は大きく変化しており、現在起こっていることを実際に追跡するには、新しいメモリベンチマークのセットが必要です。

    また、PostgreSQL 9.0は、カーネル回帰が原因で、Linuxで通常の正確な結果を提供できなかった大きな問題を修正しました。これは、すでにあまりにも一般的な状況をさらに悪化させたためです。単一のpgbenchクライアントが、実行時にボトルネックになりやすいということです。データベース自体よりも。私がマルチスレッドpgbench(スレッドをサポートしないシステムではマルチプロセスpgbenchになることもあります)に対して行ったレビューでは、カーネルの非互換性が悪いシステムでも、30%を超える確実なスピードアップが示唆されました。その後のテストでは、最近のLinuxカーネルでは、安価な最新のプロセッサでさえもフルスループットを得るのに8pgbenchプロセスを簡単に使用できることが示されています。そのようなシステムでそれがどのように実行されるのか、そしてこの新機能によって、データベースを実行しているCPUパフォーマンスを測定する主要な方法としてpgbenchを再び使用できるようになる方法について詳しく説明します。

    最近、pgbench-toolsのgitリポジトリを更新して、PostgreSQL 8.4と基本的な9.0の互換性のサポートを追加しました。次の更新には、マルチスレッドオプションのサポートが含まれる予定です。動作する必要があります。これはすべてどこかでリードしています。サーバー側でCPUが制限されているPostgreSQLのパフォーマンスを正確に測定すると、2年以上はそうではありませんでしたが、これらはPostgreSQLコードベースのパフォーマンスの低下を監視するための便利な方法になります。含まれているテストは、最終的にはそれをカバーするために拡張する必要がありますが、今のところ、pgbenchを使用して、単純なSELECTステートメントの実行速度に影響を与える回帰を見つけることができるようになりました。平均処理速度が劇的に低下するのを見ると、アサーションを使用して誤ってPostgreSQLを構築するたびに、それがキャッチされるため、これは期待どおりに機能することを知っています。

    このようなリグレッションをテストするためにここでいくつかのシステムをセットアップしたら、問題は、私が行っていることを自動化する方法と、より広範囲のビルドチェックアウトに対して同じことを行う方法になります。理想的には、毎日の平均SELECTパフォーマンスのグラフをバージョンごとに表示できるので、それを減らすコミットが導入されたときに、パフォーマンスが低下したときにすぐにわかります。これは、PostgreSQLビルドファームと同様のパフォーマンスファームを構築するための夢の目標です。ピースはほぼすべて揃っています。pgbenchのパーツが完成し、gitと直接通信できるようにするためのbuildfarmの拡張機能が進んでいます(必須ではありませんが、このプロジェクトに取り組んでいる人は、回避できるのであればCVSを使用したいとは思わないでしょう)。 、そしてこの時点で欠けている主なものは、私が行ってきたことをビルドファームのようなクライアントに統合するために時間を割く人です。

    そして今、私たちにはその仕事のチャンクを喜んで手伝ってくれる企業スポンサーがいるようです。私たちがすべて終わったときにその功績を認めさせていただきます。それは今年の夏に行われる予定です。 PostgreSQL 9.1の開発と9.0のバックパッチは、パフォーマンスの低下を防ぐために初期のパフォーマンスファームが導入された状態で行われることを完全に期待しています。新しいマルチスレッドpgbenchを古いPostgreSQLバージョンにバックポートできる場合は、それらもミックスに含めることができます。私はすでに8.3pgbenchのバックポートを持っていますが、これには多くの改善があり、8.2システムをテストするためだけに維持しています。 pgbenchをかなりスタンドアロンのcontribモジュールとして使用すると、新しいデータベース機能も存在することを期待しない限り、システムの他の部分とは異なる後のモジュールを構築することができます。

    それがあなたが興味を持っているものであるならば、会議での私の話は、私がそれが構築されることを期待する基礎を計画するつもりです。とにかく、あなたが会議に参加して、そこで提示されている講演の長いリストを楽しむことができることを願っています。


    1. RLIKE演算子がMySQLでどのように機能するか

    2. OracleのNEW_TIME()関数

    3. クラウド内のMySQL-AmazonRDSから独自のサーバーへのオンライン移行:パート2

    4. OracleJDBCの断続的な接続の問題