Submit Search
PostgreSQL Query Cache - "pqc"
2 likes
4,053 views
Uptime Technologies LLC (JP)
PostgreSQL Query Cacheは、PostgreSQLへの問い合わせをメモリ内にキャッシングすることで、SQL問い合わせのパフォーマンスを「劇的に(10~100倍)」改善します。
Technology
Read more
1 of 13
1
2
3
4
5
6
7
8
9
10
11
12
13
More Related Content
PDF
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
NTT DATA OSS Professional Services
PDF
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
Hironobu Suzuki
PDF
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
NTT DATA Technology & Innovation
PDF
忙しい人の5分で分かるDocker 2017年春Ver
Masahito Zembutsu
PDF
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Masahito Zembutsu
PDF
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
PDF
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
Hibino Hisashi
PDF
DockerとPodmanの比較
Akihiro Suda
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
NTT DATA OSS Professional Services
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
Hironobu Suzuki
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
NTT DATA Technology & Innovation
忙しい人の5分で分かるDocker 2017年春Ver
Masahito Zembutsu
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Masahito Zembutsu
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
Hibino Hisashi
DockerとPodmanの比較
Akihiro Suda
What's hot
(20)
PDF
Vacuum徹底解説
Masahiko Sawada
PDF
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
Preferred Networks
PDF
Dockerからcontainerdへの移行
Kohei Tokunaga
PDF
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Masahito Zembutsu
PDF
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
aha_oretama
PDF
YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)
NTT DATA Technology & Innovation
PDF
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
NTT DATA Technology & Innovation
PDF
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
NTT DATA Technology & Innovation
PDF
TripleOの光と闇
Manabu Ori
PDF
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
PDF
20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)
Amazon Web Services Japan
PPTX
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
NTT DATA Technology & Innovation
PDF
PostgreSQLアーキテクチャ入門
Uptime Technologies LLC (JP)
PPTX
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
NTT DATA Technology & Innovation
PDF
DPDKによる高速コンテナネットワーキング
Tomoya Hibi
PDF
3分でわかるAzureでのService Principal
Toru Makabe
PDF
Githubを使って簡単に helm repoを公開してみよう
Shingo Omura
PDF
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
PDF
PostgreSQLレプリケーション(pgcon17j_t4)
Kosuke Kida
PDF
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
Uptime Technologies LLC (JP)
Vacuum徹底解説
Masahiko Sawada
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
Preferred Networks
Dockerからcontainerdへの移行
Kohei Tokunaga
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Masahito Zembutsu
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
aha_oretama
YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)
NTT DATA Technology & Innovation
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
NTT DATA Technology & Innovation
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
NTT DATA Technology & Innovation
TripleOの光と闇
Manabu Ori
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)
Amazon Web Services Japan
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
NTT DATA Technology & Innovation
PostgreSQLアーキテクチャ入門
Uptime Technologies LLC (JP)
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
NTT DATA Technology & Innovation
DPDKによる高速コンテナネットワーキング
Tomoya Hibi
3分でわかるAzureでのService Principal
Toru Makabe
Githubを使って簡単に helm repoを公開してみよう
Shingo Omura
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
PostgreSQLレプリケーション(pgcon17j_t4)
Kosuke Kida
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
Uptime Technologies LLC (JP)
Ad
Viewers also liked
(16)
PDF
pgstattuple2: デッドタプル推定のための統計的手法
Uptime Technologies LLC (JP)
PDF
Uptime Database Appliance テクノロジープレビュー
Uptime Technologies LLC (JP)
PDF
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13
Uptime Technologies LLC (JP)
PDF
Postgres Toolkit
Uptime Technologies LLC (JP)
PDF
PostgreSQL安定運用のコツ2009 @hbstudy#5
Uptime Technologies LLC (JP)
PDF
「今そこにある危機」を捉える ~ pg_stat_statements revisited
Uptime Technologies LLC (JP)
PDF
Postgres Toolkitのご紹介
Uptime Technologies LLC (JP)
PDF
BigDataを迎え撃つ! PostgreSQL並列分散ミドルウェア「Stado」の紹介と検証報告
Uptime Technologies LLC (JP)
PDF
PL/Pythonで独自の集約関数を作ってみる
Uptime Technologies LLC (JP)
PDF
PostgreSQLバックアップの基本
Uptime Technologies LLC (JP)
PDF
PostgreSQLセキュリティ総復習
Uptime Technologies LLC (JP)
PDF
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
Uptime Technologies LLC (JP)
PDF
Ranking system by Elasticsearch
Kazuhiro Osawa
PDF
いまさら聞けないPostgreSQL運用管理
Uptime Technologies LLC (JP)
PDF
まずやっとくPostgreSQLチューニング
Kosuke Kida
PDF
In-Database Analyticsの必要性と可能性
Satoshi Nagayasu
pgstattuple2: デッドタプル推定のための統計的手法
Uptime Technologies LLC (JP)
Uptime Database Appliance テクノロジープレビュー
Uptime Technologies LLC (JP)
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13
Uptime Technologies LLC (JP)
Postgres Toolkit
Uptime Technologies LLC (JP)
PostgreSQL安定運用のコツ2009 @hbstudy#5
Uptime Technologies LLC (JP)
「今そこにある危機」を捉える ~ pg_stat_statements revisited
Uptime Technologies LLC (JP)
Postgres Toolkitのご紹介
Uptime Technologies LLC (JP)
BigDataを迎え撃つ! PostgreSQL並列分散ミドルウェア「Stado」の紹介と検証報告
Uptime Technologies LLC (JP)
PL/Pythonで独自の集約関数を作ってみる
Uptime Technologies LLC (JP)
PostgreSQLバックアップの基本
Uptime Technologies LLC (JP)
PostgreSQLセキュリティ総復習
Uptime Technologies LLC (JP)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
Uptime Technologies LLC (JP)
Ranking system by Elasticsearch
Kazuhiro Osawa
いまさら聞けないPostgreSQL運用管理
Uptime Technologies LLC (JP)
まずやっとくPostgreSQLチューニング
Kosuke Kida
In-Database Analyticsの必要性と可能性
Satoshi Nagayasu
Ad
Similar to PostgreSQL Query Cache - "pqc"
(20)
PDF
Webサーバのチューニング
Yu Komiya
PDF
Azure Synapse Analytics 専用SQL Poolベストプラクティス
Microsoft
PPTX
CAメインフレーム システムリソース削減に貢献する製品について
Kaneko Izumi
PDF
Intro2 Sqlanalyzer
saeka
PDF
MySQL 初めてのチューニング
Craft works
KEY
Web Operations and Perl kansai.pm#14
Masahiro Nagano
PDF
Jjug springセッション
Yuichi Hasegawa
KEY
Mysql casial01
matsuo kenji
PDF
過去事例から学ぶ SharePoint パフォーマンス問題とその対策
Atsuo Yamasaki
PDF
[db tech showcase Tokyo 2014] D21: Postgres Plus Advanced Serverはここが使える&9.4新機...
Insight Technology, Inc.
PPT
プロとしてのOracleアーキテクチャ入門 ~番外編~
ryouta watabe
PDF
CakePHP2.0 performance, upgrade shell
ichikaway
PDF
20181004 cndjp vitess
Koto Shigeru
PDF
[DI15] Build 2017 Updates ~ Azure Database for MySQL/PostgreSQL 最速紹介
de:code 2017
PPT
HandlerSocket plugin for MySQL
akirahiguchi
PDF
What's new in open shift container platform 4.7 japan_20210318
Yuhki Hanada
PDF
20180706_VxRailCC_ワークショップ編_NW
VxRail ChampionClub
PDF
C16 45分でわかるPostgreSQLの仕組み by 山田努
Insight Technology, Inc.
PDF
tcpdump & xtrabackup @ MySQL Casual Talks #1
Ryosuke IWANAGA
PDF
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
Ryota Watabe
Webサーバのチューニング
Yu Komiya
Azure Synapse Analytics 専用SQL Poolベストプラクティス
Microsoft
CAメインフレーム システムリソース削減に貢献する製品について
Kaneko Izumi
Intro2 Sqlanalyzer
saeka
MySQL 初めてのチューニング
Craft works
Web Operations and Perl kansai.pm#14
Masahiro Nagano
Jjug springセッション
Yuichi Hasegawa
Mysql casial01
matsuo kenji
過去事例から学ぶ SharePoint パフォーマンス問題とその対策
Atsuo Yamasaki
[db tech showcase Tokyo 2014] D21: Postgres Plus Advanced Serverはここが使える&9.4新機...
Insight Technology, Inc.
プロとしてのOracleアーキテクチャ入門 ~番外編~
ryouta watabe
CakePHP2.0 performance, upgrade shell
ichikaway
20181004 cndjp vitess
Koto Shigeru
[DI15] Build 2017 Updates ~ Azure Database for MySQL/PostgreSQL 最速紹介
de:code 2017
HandlerSocket plugin for MySQL
akirahiguchi
What's new in open shift container platform 4.7 japan_20210318
Yuhki Hanada
20180706_VxRailCC_ワークショップ編_NW
VxRail ChampionClub
C16 45分でわかるPostgreSQLの仕組み by 山田努
Insight Technology, Inc.
tcpdump & xtrabackup @ MySQL Casual Talks #1
Ryosuke IWANAGA
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
Ryota Watabe
PostgreSQL Query Cache - "pqc"
1.
PostgreSQL Query Cache
“pqc” 2011/2/25 アップタイム・テクノロジーズ Copyright 2010-2011 Uptime Technologies, LLC. All rights reserved.
2.
pqc概要 • PostgreSQLへの問い合わせをキャッシングすることで、SQL問い合わ
せのパフォーマンスを「劇的に(10~100倍)」改善する。 – PostgreSQLへの問い合わせを中継する。 – 異なるポート上で接続を待ち受けている(デフォルトでは9999) – SELECTクエリの結果をキャッシュする(クエリキャッシュ)。 – キャッシュのライフサイクル管理を行う。 PostgreSQL クライアント PostgreSQLサーバ pqcd Copyright 2010-2011 Uptime Technologies, LLC. All rights reserved. PostgreSQL バックエンド キャッシュメモリ
3.
外部仕様 • シンプルクエリ実行とPreparedStatementをサポートする
– プロトコルはバージョン3のみサポート • アクティブキャッシュモード – 基本的にすべてのSELECTクエリの結果をキャッシュする。 – 指定した特定のSELECTクエリの結果はキャッシュしない。 • パッシブキャッシュモード – 基本的にクエリの結果をキャッシュしない。 – 指定した特定のSELECTクエリの結果のみをキャッシュする。 – 指定した実行時間を越えたクエリの結果をキャッシュする(未実装) • キャッシュインバリデーション(無効化) – キャッシュ有効期限の指定によるクエリキャッシュ無効化 – 特定のクエリを指定することによるクエリキャッシュ無効化 – すべてのクエリキャッシュの無効化(未実装) Copyright 2010-2011 Uptime Technologies, LLC. All rights reserved.
4.
導入手順 Copyright 2010-2011
Uptime Technologies, LLC. All rights reserved. • 必要なライブラリ – libevent 1.4.14b (memcachedが使用) – memcached 1.4.5 – libmemcached 0.43 • インストール – automake – ./configure --prefix=$PREFIX – make – sudo make install – cd $PREFIX/etc – cp pqcd_hba.conf.sample pqcd_hba.conf • 起動 – $PREFIX/bin/pqcd (daemon mode) – $PREFIX/bin/pqcd –n –d (debug mode) • 終了 – $PREFIX/bin/pqcd stop (daemon mode) – <CTRL+C> (debug mode)
5.
導入手順(RPMから) Copyright 2010-2011
Uptime Technologies, LLC. All rights reserved. • 必要なRPM – uqc-libevent-1.4.14b-1.i386.rpm – uqc-memcached-1.4.5-1.i386.rpm – uqc-libmemcached-0.43-1.i386.rpm – uqc-querycache-20110223-1.i386.rpm • 設定ファイル – /opt/uptime/querycache/etc/pqcd.conf – /opt/uptime/querycache/etc/pqcd_hba.conf • 起動 – /opt/uptime/querycache/bin/pqcd • 終了 – /opt/uptime/querycache/bin/pqcd stop
6.
設定オプション • 必要に応じてpqcd.conf
の設定を行います($PREFIX/etc にあります) Copyright 2010-2011 Uptime Technologies, LLC. All rights reserved. • memcached_bin – Memcachedの実行ファイルのパス名(デフォルトは “/opt/uptime/querycache/bin/memcached” ) • query_cache_mode – クエリキャッシュモード。“active” または“passive” を指定(デフォルトは“active” ) • query_cache_expiration – キャッシュの有効期限を秒数で指定(デフォルトは30)
7.
キャッシュ制御ヒント文 • SELECT文の先頭にコメントとして付加する。
– /* cache:refresh */SELECT * FROM … – <slash> <asterrisk> <space> <hint> <space> <asterisk> <slash> • cache:on (アクティブモードのデフォルト) – キャッシュを参照する。無ければクエリを実行してキャッシュに乗せる。 • cache:off (パッシブモードのデフォルト) – キャッシュを参照しない。かつ、キャッシュに乗せない。 Copyright 2010-2011 Uptime Technologies, LLC. All rights reserved. • cache:refresh – キャッシュを参照しない。クエリを実行してキャッシュに乗せる。 • cache:expire – キャッシュを無効化する。クエリは実行しない。(未実装) • cache:expireall – すべてのクエリのキャッシュを無効化する。クエリは実行しない。(未実装)
8.
実行例 Copyright 2010-2011
Uptime Technologies, LLC. All rights reserved.
9.
通常の実行とキャッシュヒット時 通常の実行時間は 400ミリ秒
クエリキャッシュによって 2度目は0.5ミリ秒で完了 Copyright 2010-2011 Uptime Technologies, LLC. All rights reserved.
10.
キャッシュ制御用ヒント文 意図的にキャッシュを 無視するヒント文
長い実行時間 ヒント文を外すと クエリキャッシュを使う Copyright 2010-2011 Uptime Technologies, LLC. All rights reserved.
11.
データ更新とキャッシュ レコードを全件削除 レコードを削除しても
キャッシュを使うため、 古い値が見える Copyright 2010-2011 Uptime Technologies, LLC. All rights reserved.
12.
キャッシュのリフレッシュ(最新化) キャッシュ更新用の ヒント文で
キャッシュを最新化 キャッシュの内容が 更新されている キャッシュヒット Copyright 2010-2011 Uptime Technologies, LLC. All rights reserved.
13.
【お問い合わせ先】 アップタイム・テクノロジーズ合同会社 E-mail:
contact@uptime.jp Web: http://www.uptime.jp/ TEL: 050-3585-7837 FAX: 03-5770-7883 Copyright 2010-2011 Uptime Technologies, LLC. All rights reserved.
Editor's Notes
#10:
[snaga@devwa02 src]$ /opt/pgsql/901/bin/psql -p 9999 -h localhost -U uptime testdb psql (9.0.1, server 8.3.6) WARNING: psql version 9.0, server version 8.3. Some psql features might not work. Type &quot;help&quot; for help. testdb=# \\timing Timing is on. testdb=# SELECT count(*) FROM pgbench_accounts; count --------- 1000000 (1 row) Time: 617.948 ms testdb=# SELECT count(*) FROM pgbench_accounts; count --------- 1000000 (1 row) Time: 3.236 ms testdb=# /* cache:off */SELECT count(*) FROM pgbench_accounts; count --------- 1000000 (1 row) Time: 455.847 ms testdb=# SELECT count(*) FROM pgbench_accounts; count --------- 1000000 (1 row) Time: 2.916 ms testdb=# DELETE FROM pgbench_accounts; DELETE 1000000 Time: 11798.786 ms testdb=# SELECT count(*) FROM pgbench_accounts; count --------- 1000000 (1 row) Time: 2.485 ms testdb=# /* cache:off */SELECT count(*) FROM pgbench_accounts; count ------- 0 (1 row) Time: 2039.547 ms testdb=# SELECT count(*) FROM pgbench_accounts; count --------- 1000000 (1 row) Time: 1.870 ms testdb=# /* cache:refresh */SELECT count(*) FROM pgbench_accounts; count ------- 0 (1 row) Time: 128.099 ms testdb=# SELECT count(*) FROM pgbench_accounts; count ------- 0 (1 row) Time: 2.491 ms testdb=#
#11:
[snaga@devwa02 src]$ /opt/pgsql/901/bin/psql -p 9999 -h localhost -U uptime testdb psql (9.0.1, server 8.3.6) WARNING: psql version 9.0, server version 8.3. Some psql features might not work. Type &quot;help&quot; for help. testdb=# \\timing Timing is on. testdb=# SELECT count(*) FROM pgbench_accounts; count --------- 1000000 (1 row) Time: 617.948 ms testdb=# SELECT count(*) FROM pgbench_accounts; count --------- 1000000 (1 row) Time: 3.236 ms testdb=# /* cache:off */SELECT count(*) FROM pgbench_accounts; count --------- 1000000 (1 row) Time: 455.847 ms testdb=# SELECT count(*) FROM pgbench_accounts; count --------- 1000000 (1 row) Time: 2.916 ms testdb=# DELETE FROM pgbench_accounts; DELETE 1000000 Time: 11798.786 ms testdb=# SELECT count(*) FROM pgbench_accounts; count --------- 1000000 (1 row) Time: 2.485 ms testdb=# /* cache:off */SELECT count(*) FROM pgbench_accounts; count ------- 0 (1 row) Time: 2039.547 ms testdb=# SELECT count(*) FROM pgbench_accounts; count --------- 1000000 (1 row) Time: 1.870 ms testdb=# /* cache:refresh */SELECT count(*) FROM pgbench_accounts; count ------- 0 (1 row) Time: 128.099 ms testdb=# SELECT count(*) FROM pgbench_accounts; count ------- 0 (1 row) Time: 2.491 ms testdb=#
#12:
[snaga@devwa02 src]$ /opt/pgsql/901/bin/psql -p 9999 -h localhost -U uptime testdb psql (9.0.1, server 8.3.6) WARNING: psql version 9.0, server version 8.3. Some psql features might not work. Type &quot;help&quot; for help. testdb=# \\timing Timing is on. testdb=# SELECT count(*) FROM pgbench_accounts; count --------- 1000000 (1 row) Time: 617.948 ms testdb=# SELECT count(*) FROM pgbench_accounts; count --------- 1000000 (1 row) Time: 3.236 ms testdb=# /* cache:off */SELECT count(*) FROM pgbench_accounts; count --------- 1000000 (1 row) Time: 455.847 ms testdb=# SELECT count(*) FROM pgbench_accounts; count --------- 1000000 (1 row) Time: 2.916 ms testdb=# DELETE FROM pgbench_accounts; DELETE 1000000 Time: 11798.786 ms testdb=# SELECT count(*) FROM pgbench_accounts; count --------- 1000000 (1 row) Time: 2.485 ms testdb=# /* cache:off */SELECT count(*) FROM pgbench_accounts; count ------- 0 (1 row) Time: 2039.547 ms testdb=# SELECT count(*) FROM pgbench_accounts; count --------- 1000000 (1 row) Time: 1.870 ms testdb=# /* cache:refresh */SELECT count(*) FROM pgbench_accounts; count ------- 0 (1 row) Time: 128.099 ms testdb=# SELECT count(*) FROM pgbench_accounts; count ------- 0 (1 row) Time: 2.491 ms testdb=#
#13:
[snaga@devwa02 src]$ /opt/pgsql/901/bin/psql -p 9999 -h localhost -U uptime testdb psql (9.0.1, server 8.3.6) WARNING: psql version 9.0, server version 8.3. Some psql features might not work. Type &quot;help&quot; for help. testdb=# \\timing Timing is on. testdb=# SELECT count(*) FROM pgbench_accounts; count --------- 1000000 (1 row) Time: 617.948 ms testdb=# SELECT count(*) FROM pgbench_accounts; count --------- 1000000 (1 row) Time: 3.236 ms testdb=# /* cache:off */SELECT count(*) FROM pgbench_accounts; count --------- 1000000 (1 row) Time: 455.847 ms testdb=# SELECT count(*) FROM pgbench_accounts; count --------- 1000000 (1 row) Time: 2.916 ms testdb=# DELETE FROM pgbench_accounts; DELETE 1000000 Time: 11798.786 ms testdb=# SELECT count(*) FROM pgbench_accounts; count --------- 1000000 (1 row) Time: 2.485 ms testdb=# /* cache:off */SELECT count(*) FROM pgbench_accounts; count ------- 0 (1 row) Time: 2039.547 ms testdb=# SELECT count(*) FROM pgbench_accounts; count --------- 1000000 (1 row) Time: 1.870 ms testdb=# /* cache:refresh */SELECT count(*) FROM pgbench_accounts; count ------- 0 (1 row) Time: 128.099 ms testdb=# SELECT count(*) FROM pgbench_accounts; count ------- 0 (1 row) Time: 2.491 ms testdb=#