SlideShare una empresa de Scribd logo
1 de 13
PostgreSQL Query Cache 
“pqc” 
2011/2/25 
アップタイム・テクノロジーズ 
Copyright 2010-2011 Uptime Technologies, LLC. All rights reserved.
pqc概要 
• PostgreSQLへの問い合わせをキャッシングすることで、SQL問い合わ 
せのパフォーマンスを「劇的に(10~100倍)」改善する。 
– PostgreSQLへの問い合わせを中継する。 
– 異なるポート上で接続を待ち受けている(デフォルトでは9999) 
– SELECTクエリの結果をキャッシュする(クエリキャッシュ)。 
– キャッシュのライフサイクル管理を行う。 
PostgreSQL 
クライアント 
PostgreSQLサーバ 
pqcd 
Copyright 2010-2011 Uptime Technologies, LLC. All rights reserved. 
PostgreSQL 
バックエンド 
キャッシュメモリ
外部仕様 
• シンプルクエリ実行とPreparedStatementをサポートする 
– プロトコルはバージョン3のみサポート 
• アクティブキャッシュモード 
– 基本的にすべてのSELECTクエリの結果をキャッシュする。 
– 指定した特定のSELECTクエリの結果はキャッシュしない。 
• パッシブキャッシュモード 
– 基本的にクエリの結果をキャッシュしない。 
– 指定した特定のSELECTクエリの結果のみをキャッシュする。 
– 指定した実行時間を越えたクエリの結果をキャッシュする(未実装) 
• キャッシュインバリデーション(無効化) 
– キャッシュ有効期限の指定によるクエリキャッシュ無効化 
– 特定のクエリを指定することによるクエリキャッシュ無効化 
– すべてのクエリキャッシュの無効化(未実装) 
Copyright 2010-2011 Uptime Technologies, LLC. All rights reserved.
導入手順 
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)
導入手順(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
設定オプション 
• 必要に応じて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)
キャッシュ制御ヒント文 
• 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 
– すべてのクエリのキャッシュを無効化する。クエリは実行しない。(未実装)
実行例 
Copyright 2010-2011 Uptime Technologies, LLC. All rights reserved.
通常の実行とキャッシュヒット時 
通常の実行時間は 
400ミリ秒 
クエリキャッシュによって 
2度目は0.5ミリ秒で完了 
Copyright 2010-2011 Uptime Technologies, LLC. All rights reserved.
キャッシュ制御用ヒント文 
意図的にキャッシュを 
無視するヒント文 
長い実行時間 
ヒント文を外すと 
クエリキャッシュを使う 
Copyright 2010-2011 Uptime Technologies, LLC. All rights reserved.
データ更新とキャッシュ 
レコードを全件削除 
レコードを削除しても 
キャッシュを使うため、 
古い値が見える 
Copyright 2010-2011 Uptime Technologies, LLC. All rights reserved.
キャッシュのリフレッシュ(最新化) 
キャッシュ更新用の 
ヒント文で 
キャッシュを最新化 
キャッシュの内容が 
更新されている 
キャッシュヒット 
Copyright 2010-2011 Uptime Technologies, LLC. All rights reserved.
【お問い合わせ先】 
アップタイム・テクノロジーズ合同会社 
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.

Más contenido relacionado

La actualidad más candente

【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
Hibino Hisashi
 

La actualidad más candente (20)

PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
 
Vacuum徹底解説
Vacuum徹底解説Vacuum徹底解説
Vacuum徹底解説
 
PostgreSQLでスケールアウト
PostgreSQLでスケールアウトPostgreSQLでスケールアウト
PostgreSQLでスケールアウト
 
爆速クエリエンジン”Presto”を使いたくなる話
爆速クエリエンジン”Presto”を使いたくなる話爆速クエリエンジン”Presto”を使いたくなる話
爆速クエリエンジン”Presto”を使いたくなる話
 
問合せ最適化インサイド
問合せ最適化インサイド問合せ最適化インサイド
問合せ最適化インサイド
 
pg_trgmと全文検索
pg_trgmと全文検索pg_trgmと全文検索
pg_trgmと全文検索
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
 
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
 
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
 
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングまずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニング
 
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
 
TIME_WAITに関する話
TIME_WAITに関する話TIME_WAITに関する話
TIME_WAITに関する話
 
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
 
より深く知るオプティマイザとそのチューニング
より深く知るオプティマイザとそのチューニングより深く知るオプティマイザとそのチューニング
より深く知るオプティマイザとそのチューニング
 
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
HA環境構築のベスト・プラクティス
HA環境構築のベスト・プラクティスHA環境構築のベスト・プラクティス
HA環境構築のベスト・プラクティス
 
WiredTigerを詳しく説明
WiredTigerを詳しく説明WiredTigerを詳しく説明
WiredTigerを詳しく説明
 
Elasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライドElasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライド
 
pg_bigmを用いた全文検索のしくみ(前編)
pg_bigmを用いた全文検索のしくみ(前編)pg_bigmを用いた全文検索のしくみ(前編)
pg_bigmを用いた全文検索のしくみ(前編)
 

Destacado

Uptime Database Appliance テクノロジープレビュー
Uptime Database Appliance テクノロジープレビューUptime Database Appliance テクノロジープレビュー
Uptime Database Appliance テクノロジープレビュー
Uptime Technologies LLC (JP)
 
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13
5ステップで始めるPostgreSQLレプリケーション@hbstudy#135ステップで始めるPostgreSQLレプリケーション@hbstudy#13
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13
Uptime Technologies LLC (JP)
 

Destacado (17)

pgstattuple2: デッドタプル推定のための統計的手法
pgstattuple2: デッドタプル推定のための統計的手法pgstattuple2: デッドタプル推定のための統計的手法
pgstattuple2: デッドタプル推定のための統計的手法
 
Uptime Database Appliance テクノロジープレビュー
Uptime Database Appliance テクノロジープレビューUptime Database Appliance テクノロジープレビュー
Uptime Database Appliance テクノロジープレビュー
 
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13
5ステップで始めるPostgreSQLレプリケーション@hbstudy#135ステップで始めるPostgreSQLレプリケーション@hbstudy#13
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13
 
Postgres Toolkit
Postgres ToolkitPostgres Toolkit
Postgres Toolkit
 
PostgreSQL安定運用のコツ2009 @hbstudy#5
PostgreSQL安定運用のコツ2009 @hbstudy#5PostgreSQL安定運用のコツ2009 @hbstudy#5
PostgreSQL安定運用のコツ2009 @hbstudy#5
 
「今そこにある危機」を捉える ~ pg_stat_statements revisited
「今そこにある危機」を捉える ~ pg_stat_statements revisited「今そこにある危機」を捉える ~ pg_stat_statements revisited
「今そこにある危機」を捉える ~ pg_stat_statements revisited
 
Postgres Toolkitのご紹介
Postgres Toolkitのご紹介Postgres Toolkitのご紹介
Postgres Toolkitのご紹介
 
BigDataを迎え撃つ! PostgreSQL並列分散ミドルウェア「Stado」の紹介と検証報告
BigDataを迎え撃つ! PostgreSQL並列分散ミドルウェア「Stado」の紹介と検証報告BigDataを迎え撃つ! PostgreSQL並列分散ミドルウェア「Stado」の紹介と検証報告
BigDataを迎え撃つ! PostgreSQL並列分散ミドルウェア「Stado」の紹介と検証報告
 
PL/Pythonで独自の集約関数を作ってみる
PL/Pythonで独自の集約関数を作ってみるPL/Pythonで独自の集約関数を作ってみる
PL/Pythonで独自の集約関数を作ってみる
 
PostgreSQLアーキテクチャ入門
PostgreSQLアーキテクチャ入門PostgreSQLアーキテクチャ入門
PostgreSQLアーキテクチャ入門
 
PostgreSQLバックアップの基本
PostgreSQLバックアップの基本PostgreSQLバックアップの基本
PostgreSQLバックアップの基本
 
PostgreSQLセキュリティ総復習
PostgreSQLセキュリティ総復習PostgreSQLセキュリティ総復習
PostgreSQLセキュリティ総復習
 
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
 
Ranking system by Elasticsearch
Ranking system by ElasticsearchRanking system by Elasticsearch
Ranking system by Elasticsearch
 
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
 
いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理
 
In-Database Analyticsの必要性と可能性
In-Database Analyticsの必要性と可能性In-Database Analyticsの必要性と可能性
In-Database Analyticsの必要性と可能性
 

Similar a PostgreSQL Query Cache - "pqc"

Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
Masahiro Nagano
 
過去事例から学ぶ SharePoint パフォーマンス問題とその対策
過去事例から学ぶ SharePoint パフォーマンス問題とその対策過去事例から学ぶ SharePoint パフォーマンス問題とその対策
過去事例から学ぶ SharePoint パフォーマンス問題とその対策
Atsuo Yamasaki
 
プロとしてのOracleアーキテクチャ入門 ~番外編~
プロとしてのOracleアーキテクチャ入門 ~番外編~プロとしてのOracleアーキテクチャ入門 ~番外編~
プロとしてのOracleアーキテクチャ入門 ~番外編~
ryouta watabe
 
HandlerSocket plugin for MySQL
HandlerSocket plugin for MySQLHandlerSocket plugin for MySQL
HandlerSocket plugin for MySQL
akirahiguchi
 
C16 45分でわかるPostgreSQLの仕組み by 山田努
C16 45分でわかるPostgreSQLの仕組み by 山田努C16 45分でわかるPostgreSQLの仕組み by 山田努
C16 45分でわかるPostgreSQLの仕組み by 山田努
Insight Technology, Inc.
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
Ryosuke IWANAGA
 

Similar a PostgreSQL Query Cache - "pqc" (20)

Webサーバのチューニング
WebサーバのチューニングWebサーバのチューニング
Webサーバのチューニング
 
Azure Synapse Analytics 専用SQL Poolベストプラクティス
Azure Synapse Analytics 専用SQL PoolベストプラクティスAzure Synapse Analytics 専用SQL Poolベストプラクティス
Azure Synapse Analytics 専用SQL Poolベストプラクティス
 
CAメインフレーム システムリソース削減に貢献する製品について
CAメインフレーム システムリソース削減に貢献する製品についてCAメインフレーム システムリソース削減に貢献する製品について
CAメインフレーム システムリソース削減に貢献する製品について
 
Intro2 Sqlanalyzer
Intro2 SqlanalyzerIntro2 Sqlanalyzer
Intro2 Sqlanalyzer
 
MySQL 初めてのチューニング
MySQL 初めてのチューニングMySQL 初めてのチューニング
MySQL 初めてのチューニング
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
 
Jjug springセッション
Jjug springセッションJjug springセッション
Jjug springセッション
 
Mysql casial01
Mysql casial01Mysql casial01
Mysql casial01
 
過去事例から学ぶ SharePoint パフォーマンス問題とその対策
過去事例から学ぶ SharePoint パフォーマンス問題とその対策過去事例から学ぶ SharePoint パフォーマンス問題とその対策
過去事例から学ぶ SharePoint パフォーマンス問題とその対策
 
[db tech showcase Tokyo 2014] D21: Postgres Plus Advanced Serverはここが使える&9.4新機...
[db tech showcase Tokyo 2014] D21: Postgres Plus Advanced Serverはここが使える&9.4新機...[db tech showcase Tokyo 2014] D21: Postgres Plus Advanced Serverはここが使える&9.4新機...
[db tech showcase Tokyo 2014] D21: Postgres Plus Advanced Serverはここが使える&9.4新機...
 
プロとしてのOracleアーキテクチャ入門 ~番外編~
プロとしてのOracleアーキテクチャ入門 ~番外編~プロとしてのOracleアーキテクチャ入門 ~番外編~
プロとしてのOracleアーキテクチャ入門 ~番外編~
 
CakePHP2.0 performance, upgrade shell
CakePHP2.0 performance, upgrade shellCakePHP2.0 performance, upgrade shell
CakePHP2.0 performance, upgrade shell
 
20181004 cndjp vitess
20181004 cndjp vitess20181004 cndjp vitess
20181004 cndjp vitess
 
[DI15] Build 2017 Updates ~ Azure Database for MySQL/PostgreSQL 最速紹介
[DI15] Build 2017 Updates ~ Azure Database for MySQL/PostgreSQL 最速紹介[DI15] Build 2017 Updates ~ Azure Database for MySQL/PostgreSQL 最速紹介
[DI15] Build 2017 Updates ~ Azure Database for MySQL/PostgreSQL 最速紹介
 
HandlerSocket plugin for MySQL
HandlerSocket plugin for MySQLHandlerSocket plugin for MySQL
HandlerSocket plugin for MySQL
 
What's new in open shift container platform 4.7 japan_20210318
What's new in open shift container platform 4.7 japan_20210318What's new in open shift container platform 4.7 japan_20210318
What's new in open shift container platform 4.7 japan_20210318
 
20180706_VxRailCC_ワークショップ編_NW
20180706_VxRailCC_ワークショップ編_NW20180706_VxRailCC_ワークショップ編_NW
20180706_VxRailCC_ワークショップ編_NW
 
C16 45分でわかるPostgreSQLの仕組み by 山田努
C16 45分でわかるPostgreSQLの仕組み by 山田努C16 45分でわかるPostgreSQLの仕組み by 山田努
C16 45分でわかるPostgreSQLの仕組み by 山田努
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
 
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
 

Último

Último (11)

Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 

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.

Notas del editor

  1. [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 &amp;quot;help&amp;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=#
  2. [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 &amp;quot;help&amp;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=#
  3. [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 &amp;quot;help&amp;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=#
  4. [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 &amp;quot;help&amp;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=#