私はPostgreSQLの最適化をしていて、それには適切な仕事をしていないものを選んでいます。だから、私がPostgreSQLを不適切な仕事に使ってみようとしているときはいつでもそれを知りたいのですが、それはそれに適していて、すべてを正しく設定しなければなりません。多くのUPDATEとPostgreSQLを使用しているストリーム
とにかく、私は頻繁に変化する多くのデータを持つデータベースが必要です。
たとえば、多くのクライアントを持ち、2つの自己記述的に頻繁に更新されるプロパティbytes_received
とbytes_sent
を持つISP(セッションを持つISP)を想像してください。各セッションはユニークなIDを持つ行で表され、彼らとの表は、あります:
CREATE TABLE sessions(
id BIGSERIAL NOT NULL,
username CHARACTER VARYING(32) NOT NULL,
some_connection_data BYTEA NOT NULL,
bytes_received BIGINT NOT NULL,
bytes_sent BIGINT NOT NULL,
CONSTRAINT sessions_pkey PRIMARY KEY (id)
)
、会計データが流れるときに、この表には、これらのような更新の多く受ける:
-- There are *lots* of such queries!
UPDATE sessions SET bytes_received = bytes_received + 53554,
bytes_sent = bytes_sent + 30676
WHERE id = 42
おそらくMVCCのおかげで、(数千もの)セッションがたくさんあるテーブルのためのアップデートが非常にたくさん(1秒間に1〜2秒)更新されることなく、決して終わりのないストリームを受け取るので、PostgreSQL は非常にです。 Postgresはこの作業にはまったく適していません。私はこの仕事には適していないと思って、memcachedbのような別のストレージにそれらのカウンタを入れて、かなり静的なデータだけを使ってPostgresを使うのが良いでしょうか?しかし、私はこのデータを頻繁に照会する能力が欠けています。例えば、TOP10のダウンローダーを見つけることは、本当にうまくいきません。
残念ながら、データ量は、を大幅に下げることはできません。説明を簡単にするために、ISP会計の例がすべて考えられています。実際の問題は別のシステムであり、その構造は何とか説明するのが難しいです。
ありがとうございました!