スライド 1

Similar documents
Web 環境におけるレイヤー別負荷の 2 違い DB サーバ AP サーバ 後ろのレイヤーほど負荷が高く ボトルネックになりやすい

スライド 1

メール全文検索アプリケーション Sylph-Searcher のご紹介 SRA OSS, Inc. 日本支社技術部チーフエンジニア Sylpheed 開発者 山本博之 Copyright 2007 SRA OSS, Inc. Japan All right

リレーショナルデータベース入門 SRA OSS, Inc. 日本支社 Copyright 2008 SRA OSS, Inc. Japan All rights reserved. 1

スライド 1

スライド 1

pgpool-ii で PostgreSQL のクラスタを楽々運用しよう OSC Tokyo 2014/12/12 SRA OSS, Inc. 日本支社マーケティング部 OSS 技術グループ 長田 悠吾

PostgreSQL による クラスタ構成の可能性 SRA OSS, Inc. 日本支社 取締役支社長 石井達夫

Zabbix で PostgreSQL を監視! pg_monz のご紹介 Zabbix Conference Japan 年 11 月 20 日 SRA OSS, Inc. 日本支社マーケティング部

SRA OSS, Inc. のご紹介 1999 年より PostgreSQL サポートを中心に OSS ビジネスを開始 2005 年に現在の形に至る 主なビジネス PostgreSQL, Zabbix などの OSS のサポート コンサルティング 導入構築 PowerGres ファミリーの開発 販売

Microsoft Word - JP-AppLabs-MySQL_Update.doc

データセンターの効率的な資源活用のためのデータ収集・照会システムの設計

自己紹介 長田悠吾 ( ナガタユウゴ ) SRA OSS, Inc. 日本支社 マーケティング部 OSS 技術グループ pgpool-ii 開発者 PostgreSQL 関連の技術調査 OSS の技術サポート PostgreSQL の開発にも参加 Copyright 2015 SRA OSS, In

スライド 1

090801OSC新潟.ppt

Exam : 1z0-882 日本語 (JPN) Title : Oracle Certified Professional, MySQL 5.6 Developer Vendor : Oracle Version : DEMO 1 / 4 Get Latest & Valid 1z0-882-JP

アジェンダ はクラウド上でも十分使えます 1. の概要 とは の導入事例 で利用される構成 2. をクラウドで使う クラウドサービスの分類 Amazon Web Services による構成例 2

PostgreSQLによる クラスタ運用および負荷分散術 SRA OSS, Inc. 日本支社 OSS事業本部 星合 拓馬

PowerPoint Presentation

Postgres Plus Advanced Server 9.3パーティションテーブルの特徴と性能検証レポート

Microsoft PowerPoint VIOPS.ppt

スライド タイトルなし

PostgreSQL 9.4 評価検証報告 SRA OSS, Inc. 日本支社高塚遙 :55 ~ 16:30 PostgreSQL 9.4 最新情報セミナー Copyright 2014 SRA OSS, Inc. Japan All rights reserved. 1

pg_monz 監視アイテム一覧 :Template App PostgreSQL Template App PostgreSQL アプリケーション LLD アイテムトリガー監視タイプ更新間隔ヒストリトレンドデフォルト説明ステータス pg.get pgsql.get.pg.bgwriter Zabb

090220VTSystemDesign.ppt

アジェンダ WG1( 性能ワーキンググループ ) の今年度テーマ 今年度の成果物 実施体制 活動報告 1: 定点観測 ( スケールアップ検証 ) 活動報告 2: パーティショニング検証 活動報告 3: ハードウェア活用 (SSD) 検証 活動報告 4: スケールアウト検証 (Postgres-XC)

平成20年度成果報告書

日本 PostgreSQL ユーザ会第 28 回しくみ + アプリケーション勉強会 Zabbix を使って PostgreSQL を監視してみよう 2014 年 2 月 1 日 TIS 株式会社中西剛紀 (Yoshinori Nakanishi)

標準化 補足資料

eラーニング資料 e ラーニングの制作目標 データベース編 41 ページデータベースの基本となる概要を以下に示す この内容のコースで eラーニングコンテンツを作成予定 データベース管理 コンピュータで行われる基本的なデータに対する処理は 次の 4 種類です 新しいデータを追加する 既存のデータを探索

PowerPoint プレゼンテーション

Chapter Two

1,.,,,., RDBM, SQL. OSS,, SQL,,.

データベースアクセス

プレポスト【問題】

関係データベース

新バージョン! Zabbix 2.2 と検証結果のご紹介 SRA OSS, Inc. 日本支社山本博之 Copyright 2013 SRA OSS, Inc. Japan All rights reserved. 1

PostgreSQL 10 で作るクラスタ構成 SRA OSS, Inc. 日本支社 取締役支社長 石井達夫

サンプル:OSDL DBT-3によるPostgreSQLの性能評価(SATA HDD&SATA SSD編)

データベース暗号化ツール「D’Amo」性能検証

PowerPoint プレゼンテーション

今さら聞けない!? Oracle入門 ~前編~

【Cosminexus V9】クラウドサービスプラットフォーム Cosminexus

復習 (SQL 文 ) 3/6 復習 (SQL 文 ) 4/6 表の作成 CREATE TABLE...; 表の削除 DROP TABLE テーブル名 ; 表内のデータが全て消えてしまう. 表内のデータを得る SELECT 列名 FROM 表名...; 表にデータを挿入する. INSERT INTO

スライド 1

SinfonexIDaaS機能概要書

内容 Visual Studio サーバーエクスプローラで学ぶ SQL とデータベース操作... 1 サーバーエクスプローラ... 4 データ接続... 4 データベース操作のサブメニューコンテキスト... 5 データベースのプロパティ... 6 SQL Server... 6 Microsoft

ERDAS IMAGINE における処理速度の向上 株式会社ベストシステムズ PASCO CORPORATION 2015

<4D F736F F D2091B28BC68CA48B8695F18D908F912E646F63>

今さら聞けない!? Oracle入門 ~後編~

高速 軽量メールクライアント Sylpheed の応用ソリューション 高速全文検索機能 (Sylph-searcher) メールライブラリ (LibSylph) OpenSource Conference 2009 Tokyo/Spring SRA OSS, Inc. 日本支社山本博之 Copyri

1.SqlCtl クラスリファレンス SqlCtl クラスのリファレンスを以下に示します メソッドの実行中にエラーが発生した場合は標準エラー出力にメッセージを出力します (1)Connect() メソッド データベースへ connect 要求を行います boolean Connect(String

QualysGuard(R) Release Notes

10th Developer Camp - B5

PowerGres Plus V9.1 のご紹介 PostgreSQL をベースに信頼性とセキュリティをプラス SRA OSS,Inc. 日本支社マーケティング部 2015/10 Copyright 2015 SRA OSS, Inc. Japan All rights reserved. 1

スライド 1

WEBシステムのセキュリティ技術

Sylpheed とは オープンソースのメールソフト ライセンスは GPL+LGPL 高速 軽量 高機能 高い操作性 高い信頼性 導入が容易 マルチプラットフォーム Windows, Linux, etc. 多言語対応 ( 約 30 ヶ国語 )

PowerPoint プレゼンテーション

PostgreSQL Plus 管理者ガイド

PostgreSQLのセキュリティを極める

memcached 方式 (No Replication) 認証情報は ログインした tomcat と設定された各 memcached サーバーに認証情報を分割し振り分けて保管する memcached の方系がダウンした場合は ログインしたことのあるサーバーへのアクセスでは tomcat に認証情報

平成20年度成果報告書

cmpsys13w14-15_database.ppt

CodeGear Developer Camp

Windows Server 2016 Hyper-V ストレージQoS機能の強化

PGECons技術ドキュメントテンプレート Ver.3

PowerPoint プレゼンテーション

intra-mart FormatCreator Version6.1

Si 知識情報処理

PowerPoint プレゼンテーション

自己紹介 正野 裕大 マサノ ユウタ SRA OSS, Inc. 日本支社 OSS技術グループ 主にAmazon Web Services (AWS) 関連のR&D活動に従事 SRA OSS, Inc. 日本支社 1999年よりPostgreSQLサポートを中心にOSSビジネスを開始 Postgre

商用監視ソフトウェアユーザの Zabbix 移行へ朗報 Zabbix Event Viewer のご紹介 【本邦初公開】

PowerPoint プレゼンテーション

Actian PSQL v12 for Magic のご紹介

WBT [6] [7] [8] [9] Web [1] WBT [2] [3] ipad PC ipad ipad ipad [4] QR QR [5] IC IC PDA IC PDA US-ASCII 4,296 QR IC IC IC QR QR QR A BB A A CC

<4D F736F F D208DCC91F088C48C8F955D89BF8F915F8DA196E5504A>

はじめに NEC と日本オラクル社は NEC のブレードサーバーシステム SIGMABLADE-H を利用し Linux プラットフォーム上で OracleRAC11g Release2 との組み合わせで線形な性能向上が可能であることを実証しました 本資料ではその検証結果について述べます 今回は 検

勉強会の流れ Google API の概要 デモ curl で実際に体験 Copyright 2010 SRA OSS, Inc. Japan All rights reserved. 2

10年オンプレで運用したmixiをAWSに移行した10の理由

XAMPP で CMS のお手軽 テスト環境を手に入れよう 2011/5/21 上村崇 1

CouchbaseLiveTokyo2015 講演資料

<4D F736F F D FC8E448FEE95F1837C815B835E838B C8F92E88B608F912E646F63>

PHP 開発ツール Zend Studio PHP アフ リケーションサーハ ー Zend Server OSC Tokyo/Spring /02/28 株式会社イグアスソリューション事業部

別紙 : 検証環境の構築手順 ( 章 ) 1. サーバ設定 1.1 IP アドレス設定 サーバは以下の 6 台を用いる pgpool-ii サーバ 2 台 DB サーバ 3 台 上位サーバ 1 台 OS は全サーバで CentOS 6.4 x86_64 とする pgpool-ii のサー

Silk Central Connect 15.5 リリースノート

Exam : J Title : Querying Microsoft SQL Server 2012 Version : DEMO 1 / 10

2D/3D CAD データ管理導入手法実践セミナー Autodesk Vault 最新バージョン情報 Presenter Name 2013 年 4 月 2013 Autodesk

スライド 1

1-1- 基 OSS 概要に関する知識 ソフトウェアの新たな開発手法となりソフトウェア業界で大きな影響力を持つようになったオープンソースについて学習する 本カリキュラム Ⅰ. 概要では オープンソースの登場から現在に至る発展の経緯や代表的なソフトウェアの特徴を理解する 講義の後半では実際にソフトウェ

PowerPoint Presentation

Microsoft Word 基_シラバス.doc

2. saccess saccess SQL SQL SQL saccess SQL SQL PHP 3. saccess saccess saccess Web *1 [5] saccess * saccess saccess, SQ

FUJITSU Cloud Service for OSS CF サービス仕様書

Microsoft Word - Android_SQLite講座_画面800×1280


Hadoop LZO圧縮機能の検証

PSQL v12 新機能のご紹介 ~ 認証要件変更に伴う運用の見直し ~ 株式会社エージーテック 2015 年 1 月 13 日

2 Java 35 Java Java HTML/CSS/JavaScript Java Java JSP MySQL Java 9:00 17:30 12:00 13: 項目 日数 時間 習得目標スキル Java 2 15 Web Java Java J

Microsoft PowerPoint pptx

Transcription:

pgpool-ii によるオンメモリクエリキャッシュの実装 SRA OSS, Inc. 日本支社

pgpool-ii とは PostgreSQL 専用のミドルウェア OSS プロジェクト (BSD ライセンス ) proxy のように アプリケーションと PostgreSQL の間に入って様々な機能を提供 コネクションプーリング 負荷分散 自動フェイルオーバー レプリケーション クエリキャッシュ

導入事例 :JTB が発行する JTB 旅カード の Web サイト カード会員が利用するポータルサイトと ポイント管理を行うバックヤード機能から構成 従来クレジットカード会社で行っていたポイント管理を JTB に移管することで 顧客のニーズを反映した情報提供を行う CRM の役割を果たす

今作っているもの オンメモリクエリキャッシュ 複数 pgpool-ii の連携機能 外部プログラムに依存しない pgpool-ii 組み込みの HA 機能 オンラインリカバリなどの制御

Web 環境におけるレイヤー別負荷の違い DB サーバ AP サーバ 後ろのレイヤーほど負荷が高く ボトルネックになりやすい

キャッシュを活用して負荷を軽減 DB サーバ AP サーバ AP サーバで結果をキャッシュして返す DB サーバで結果をキャッシュして返す

キャッシュの実装例 (1) アプリケーションサーバ /httpdサーバレベルでのキャッシュ実装 APC(Alternative PHP cache) PHPが動いているサーバ上の共有メモリにキャッシュを作る Apache2のコンテントキャッシュ mod_cache, mod_file_cache RailsやHibernateなどのORマッパーでのキャッシュ Squid や Varnish などのリバースプロキシを使う memcached などの KVS(Key Value Store) を使ったキャッシュ API やフレームワーク固有の方法でのキャッシュなので それぞれ使い方や特性が違う 使用するフレームワークが変わると実装し直し

DBMS でのキャッシュ キャッシュの実装例 (2) MySQL の実装が有名 DB2 にもある? DBMS へのアクセスがなくなるわけではないので DBMS がボトルネックになることもある MySQL のクエリキャッシュ オンメモリキャッシュ クエリ文字列が一致したらキャッシュヒット Prepared query には対応していない テーブルが更新されたら該当キャッシュは全クリアされる MySQL を再起動したらキャッシュの内容はなくなる

AP サーバのキャッシュと DB サーバのキャッシュの比較 AP サーバでキャッシュ DB サーバでキャッシュ キャッシュの効果 DBサーバへの負荷 アプリケーション透過性 スケーラビリティ

実は pgpool-ii にもすでにクエリキャッシュがあります しかしいろいろ問題が... キャッシュストレージが DB なので遅い DB を更新しても自動ではキャッシュが更新されない 拡張問い合わせに対応していない そこで 新しく実装しなおすことにしました Google Summer of Code としてプロトタイプを実装 現在バグ取り 未実装部分の実装を行っています

pgpool-ii オンメモリクエリキャッシュの主な機能 キャッシュストレージとして 共有メモリか memcached を選択できる セッション ユーザをまたがってキャッシュが再利用できる memcached を使う場合は pgpool-ii PostgreSQL を再起動した後にキャッシュを再利用することも可能 テーブル別にキャッシュする しないを指定できる キャッシュの更新は自動的に行われる 更新問い合わせが来たらキャッシュをクリア 一定時間が過ぎたキャッシュを自動クリアすることも可能 拡張問い合わせでもキャッシュが使える ( 実装中 )

pgpool-ii オンメモリクエリキャッシュの利用イメージ pgpool-ii DB サーバ AP サーバ pgpool-ii で結果をキャッシュして返す

AP サーバ DB サーバ pgpool-ii のキャッシュ機能の比較 AP サーバでキャッシュ DB サーバでキャッシュ pgpool-ii でキャッシュ キャッシュの効果 DB サーバへの負荷 アプリケーション透過性 スケーラビリティ

pgpool-ii オンメモリクエリキャッシュの仕組み SELECT 共有メモリ OR memcached キャッシュにあるか? NO SQL パーサ YES キャッシュストレージ 振り分けエンジン コミット時に SELECT 結果をキャッシュ PostgreSQL DB

キャッシュサーバのスケールアウト memcached サーバのキャッシュを共有できる DB サーバ AP サーバ pgpool-ii

工夫した点キャッシュの ヒット の定義 クエリ文字列 + データベース名 + テーブル名 + ユーザ名を MD5 ハッシュしたものをキーにして一致を判断し ハッシュ値が一致したらキャッシュがヒットしたものと見なす 直接 SQL 文を比較しないのは 長大なSQL 文を保存する必要性を避けるためユーザ名がキーに含まれているのは 参照権限がないテーブルのデータをキャッシュを経由して他のユーザが参照できないようにするため 一方で参照しても良いキャッシュを参照できないデメリットがある MD5 ハッシュで管理してキーが衝突する心配はないのか? 管理するキーの数を 2^32( 約 42 億 ) とする 1 マイクロ秒 (1/1,000,000 秒 ) に 1 回キャッシュを登録しても 衝突するまでの平均時間は太陽の寿命より長い ( たぶん ) 2^(128-32)/(1000*1000*60*60*24*365) = 2,512,308,552,583,217 年 = 2,512 兆年 = 2.5 京年

キャッシュ対象とならない SELECT Immutable でない関数への呼び出しを含む SELECT SELECT CURRENT_TIMESTAMP; SELECT INTO, SELECT FOR UPDATE, SELECT FOR SHARE SELECT の結果データが大きいもの (> memqcache_maxcache) 巨大なデータでキャッシュが使い尽くされてしまうのを防ぐため 成功しなかった SELECT ロールバックされたトランザクション内の SELECT 結果 BEGIN; INSERT INTO t1 VALUES(1); SELECT * FROM t1; ROLLBACK; もし SELECT * FROM t1 の結果をキャッシュしてしまうと 次の SELECT * FROM t1 で存在しないはずの 1 が返ってしまう 一時テーブルを含んでいる SELECT セッションが終了するとテーブルが消えてしまうため Unlogged テーブルを含んでいる SELECT PostgreSQL クラッシュ後の再起動でデータが消えてしまうため

キャッシュ更新 / 無効化ポリシー (Invalidation) キャッシュ対象のテーブルが一部でも更新されたら そのテーブルを参照しているキャッシュをすべて自動的に削除する 更新クエリ :INSERT/UPDATE/DELETE/TRUNCATE/COPY FROM そのために キャッシュを登録する際に参照しているテーブルのOIDを調べ ファイルに登録しておく更新クエリが実行されたらそのファイルを調べて 関連するキャッシュを削除する データベースやテーブルが削除された場合も同様 テーブル構造が変わるようなコマンド (ALTER TABLE) が実行された場合も同様 更新が多い DB には向かない 有効時間を過ぎたキャッシュは無効になる ( 無効にしない設定も可能 ) 手動でキャッシュを削除可能 ( 計画中 ) キャッシュストレージが memcached の場合はちょっと悩ましい pgpool-ii や PostgreSQL が再起動しても memcached が動いていれば前回のキャッシュを有効に使える?

制限事項 VIEW もキャッシュされるが VIEW が参照しているテーブルが更新されてもキャッシュは有効 スキーマが異なっていても DB 名 テーブル名が同じならば同じテーブルと見なされる トリガによって暗黙的に更新されるテーブルが認識できない 外部キーが指定されていて ON DELETE CASCADE などで他のテーブルの行が暗黙的に更新されたことが認識できない DROP TABLE CASCADE で暗黙的に削除されたテーブルが認識できない TRUCATE TABLE CASCADE で暗黙的に内容が削除されたテーブルが認識できない

オンメモリクエリキャッシュの設定項目 memory_cache_enabled = false メモリキャッシュの有効 / 無効 memqcache_method = 'shmem' キャッシュストレージの選択 shmem( 共有メモリ ) or memcachedが選択可能 memcachedを選択した場合の設定項目 memqcache_memcached_host = 'localhost' memqcache_memcached_port=11211 memqcache_total_size=134217728 トータルキャッシュサイズ memqcache_expire=60 キャッシュの有効時間 memqcache_maxcache=1024 格納できる最大のSELECT 結果サイズ memqcache_cache_block_size=1048576 キャッシュブロックのサイズ ( 共有メモリのときのみ ) memqcache_oiddir = '/var/log/pgpool/oiddir' テーブルOIDを格納する領域

ベンチマーク! SELECT count(*) という PostgreSQL では全スキャンになる遅いクエリを約 100% のキャッシュヒット率でアクセスしたケース ( ベストケース ) SSDを使い しかもテーブルがキャッシュに乗った状態なので 実環境ではもっと差が開く可能性があるハードウェア ノート PC(dual core i5-2540m CPU @ 2.60GHz Hyper threading 有効 メモリ 8GB SSD(Intel 320 MLC) ソフトウェア pgpool-ii, PostgreSQL, memcached を同じマシンで動かしている PostgreSQL 9.1 shared_buffers = 32MB pgbench SQL: SELECT count(*) FROM pgbench_accounts; 1000 回実行 10 万件 テーブルサイズ 13MB I/O ネックにならない

ベンチマーク結果 50,000 45,000 40,000 トランザクション / 秒 35,000 30,000 25,000 20,000 15,000 267 倍の性能向上 10,000 130 倍の性能向上 5,000 0 PostgreSQL 9.1 memcached shmem

まとめ 各レイヤにおけるキャッシュソリューションを比較 アプリケーションサーバでのキャッシュは効果が高いが アプリケーションの改造が必要になることが多い DBMS でのキャッシュは アプリケーションの改造が要らないメリットがある また DBMS の負担を軽減する 更新の多い用途には向かない スケールアウトができない pgpool-ii のオンメモリキャッシュは アプリケーションの改造が不要 DBMS の負担を軽減し さらにスケールアウトすることができる ただし 更新の多い用途には向かない pgpool-ii のようなミドルウェアにおけるキャッシュは 用途によって大きなメリットがある

今後の開発予定 拡張問い合わせへの対応 テーブル別に自動キャッシュバリデーションをする しないを指定できる 2012 年 5 月位にリリース予定

参考 URL pgpool-ii のホスティングサイト http://www.pgpool.net 旧サイト pgfoundry から引っ越したので注意! tar ball のダウンロードができます ソースリポジトリは git.postgresql.org で http://www.pgpool.net からリンクされています 日本語と英語のメーリングリストがあります Twitter @pgpool2