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

pgmemcacheのセットアップと使用法

    PostgreSQLは単一の大きな同期レベルのメモリ管理を提供しないため、PostgreSQLでテーブルをプリロードまたはキャッシュすることは困難な作業です。すべての記憶は独立しています。キャッシュは、memcachedなどのサードパーティツールを使用して可能です。

    pgmemcacheは、memcachedへのインターフェースを提供するPostgreSQLユーザー定義関数(API)のセットです。 pgmemcacheの前提条件では、libmemcachedを使用することをお勧めしますが、memcachedを一緒にインストールすることもお勧めします。私のプレゼンテーションは、pgmemcacheAPIを使用したインストール/キャッシュ/モニタリングで構成されています。開発者でもハッカーでもないので:)、私の実装方法は非常に単純な方法です。

    ポイント:

    • キー/値の手段に基づいて値をキャッシュに格納します。主キー/一意キーを使用してテーブルを保持することをお勧めします。
    • データの冗長性なし– memcachedがダウンしたり、スペースが不足したりすると、新しいレコードと更新が失われます。
    • すべてのmemcachedコマンドをサポートします(set / get(single / multi)/ delete / replace / incr / stats)
    • データをmemcachedに保持した後、バックエンドからテーブルを削除しても、memcachedはエラーをスローしません。それをどのように維持するかはすべてあなたの管理です。
    • データを反復処理したり、保存されているキーを判別したりすることはできません。
    • ユーザーがプレイ中または接続している間は、memcachedサーバーを停止したり、新しいサーバーをプールに追加したりすることはできません。
    • 何らかの理由でバックグラウンド更新プロセスが停止した場合、更新は行われず、memcachedサーバーがいっぱいになる可能性があります。
    • すべてのPostgreSQLバックエンドは、データにアクセスする前にmemcachedポートにバインドする必要があります。
    • Memcachedはデフォルトのポート11211で実行されます

    前提条件:

    1. PostgreSQL8.4。以上
    2. libevent
    3. memcached
    4. libmemcached
    5. pgmemcache
    6. 監視ツール(監視ツール、damemtopなど)

    インストール:
    ステップ1.(libevent)

    pgmemcacheを構成する場合、Libevent APIは重要です。インストールの最初のステップとして、ライブラリを使用することをお勧めします。それでは、デフォルトの場所で構成するlibeventライブラリから始めましょう。

    Download link for libevent:
    http://www.monkey.org/~provos/libevent-2.0.12-stable.tar.gz
    tar -xvf libevent-2.0.12-stable.tar.gz
    cd libevent-2.0.12-stable
    ./configure
    make
    make install

    ステップ2(memcached)

    libeventを有効にしてmemcachedをインストールします。

    Download link for memcached:
    http://memcached.googlecode.com/files/memcached-1.4.6.tar.gz
    cd /usr/local/src/memcached-1.4.6
    ------on 32-bit
    export LD_LIBRARY_PATH=/usr/lib:/opt/PostgreSQL/9.0/lib:$LD_LIBRARY_PATH
    ./configure --prefix=/opt/PostgreSQL/9.0/bin/ --with-libevent=/usr/lib
    ------on 64-bit
    export LD_LIBRARY_PATH=/usr/lib64:/opt/PostgreSQL/9.0/lib:$LD_LIBRARY_PATH
    ./configure --prefix=/opt/PostgreSQL/9.0/bin/ --with-libevent=/usr/lib64
    make
    make install

    ステップ3.(libmemcached)

    pgmemcacheはlibmemcachedの上に構築されています。 Libmemcachedはmemcacheバイナリの場所を探すため、先に進む前にmemcachedバイナリへのパスを設定します。

    export PATH=/opt/PostgreSQL/9.0/bin/bin:$PATH
    export LD_LIBRARY_PATH=/usr/lib:/opt/PostgreSQL/9.0/lib:$LD_LIBRARY_PATH
    Download link:
    http://launchpad.net/libmemcached/1.0/0.50/+download/libmemcached-0.50.tar.gz
    cd libmemcached-0.50
    ./configure
    make
    make install

    ステップ4(pgmemcache)

    pgmemcache APIは、データのキャッシュ/取得のようにmemcachedとやり取りするのに役立ちます。

    Download link:
    http://pgfoundry.org/frs/download.php/3018/pgmemcache_2.0.6.tar.bz2
    cd pgmemcache
    PATH=/opt/PostgreSQL/9.0/bin:$PATH make USE_PGXS=1 install
    or
    make
    make install

    インストールすると、PG contribの場所でmemcacheとやり取りするために、すべてのAPIを含むpgmemcache.sqlファイルが作成されます。 pgmemcache APIを作成するには、すべてのデータベースでpgmemcache.sqlファイルを実行するだけです。

    psql -p PGPORT -d PGDATABASE -f /opt/PostgreSQL/9.0/share/postgresql/contrib/pgmemcache.sql

    pgmemcache APIのリスト:

    注: .sqlファイルの実行中に、「ISTFATAL:ライブラリを読み込めませんでした」/opt/PostgreSQL/9.0/lib/postgresql/pgmemcache.soのようなエラーが発生する場合があります。ディレクトリ"。つまり、PGインスタンスは新しく作成されたライブラリでロードされませんでした。解決し、PATHとLD_LIBRARY_PATHを設定し、インスタンスを再起動してライブラリを認識します。

    Eg:-
    export PATH=/opt/PostgreSQL/9.0/bin/bin:$PATH
    export LD_LIBRARY_PATH=/usr/lib:/opt/PostgreSQL/9.0/lib:$LD_LIBRARY_PATH
    $pg_ctl -D $PGDATA restart

    pgmemcacheをデフォルトでPGインスタンスにロードする場合は、postgresql.confファイルを編集し、次のパラメーターを変更してクラスターを再起動します。

    shared_preload_libraries='pgmemcache'
    custom_variable_classes='pgmemcache'

    構成:
    ステップ1。

    データをキャッシュするには、最初にメモリを初期化する必要があります。メモリが割り当てられると、後でPGバックエンドがデータをバインドしてキャッシュにプッシュする責任を負います。ここでは、デフォルトポート11211で512MBのローカルホストでmemcacheを開始しました。-dはデーモンを開始することを意味します。私の演習はすべてローカルホストで行われます。

    $./memcached -d -m 512 -u postgres -l localhost -p 11211

    注:キャッシュからデータを取得するには、すべてのPostgreSQLバックエンドが最初にデータをバインドして取得する必要があります。

    ステップ2。

    インスタンスを実行中のmemcacheポートにバインドします。バインド後、memcached統計をチェックアウトします。

    ステップ3。

    次に、データをmemcachedにキャッシュします。Memcachedは、キー/値を使用してデータをメモリに常駐させます。テーブルにプライマリ/一意キーがあることを確認して、取得が簡単になるようにします。前述のように、値を保持してそれらにアクセスするための非常に優れたAPIがあります。私の例では、memcache_set()を使用して値を保持し、memcache_get()を使用してデータを取得します。

    memcachedに値を設定したら、バックエンドをmemcachedにバインドする責任があり、pgmemcacheAPIを使用してデータにアクセスできます。各Postgresバックエンドは、アクセスする前にバインドする必要があります。以下の例をご覧ください。

    キャッシュからのデータの取得

    監視

    Linuxに精通している場合は、memcachedメモリに関する最大の情報を引き出すことができますが、monitoring-tools、damemtopなどのmemcachedソースパックに付属しているツールはほとんどありません。 memcacheを監視するためにmonitoring-toolsユーティリティを使用しています。

    usage:-
    memcached-tool localhost display
    memcached-tool localhost dump
    memcached-tool localhost stats | grep bytes

    例:

    pgmemcacheをセットアップし、基本を理解するための私の側からの小さな努力。お役に立てば幸いです。高く評価されているコメントや提案を投稿し続けてください。


    1. Oracleでバージョン4(ランダム)UUIDを生成するにはどうすればよいですか?

    2. RLIKEがMariaDBでどのように機能するか

    3. MySQLのnow()+1日

    4. PostgreSQLの主キーとしてのUUIDは、インデックスのパフォーマンスを低下させますか?