最近、久しぶりにPostgreSQLのクエリチューニングをしていたのですが、その過程で「この本はぜひもっと多くの人に読んでもらいたい」と改めて思い出した一冊がありました。 それは、「SQLパフォーマンス詳解(原題:SQL Performance Explained)」という本です。 SQLパフォーマンス詳解 http://sql-performance-explained.jp/ パフォーマンスチューニング、特にクエリチューニングについて説明する場合、その前提となる知識は広範なものになります。 そのため、自分が頑張って説明するよりも、優れたエキスパートのまとめたコンテンツを活用させてもらう方が、質・量ともに優れたインプットにしていただけるのではないか、と思うのです。 また、この「SQLパフォーマンス詳解」は非常に良い本であるにも関わらず、一般の出版社から出ているわけではないため、それほど積
先日、「How a single PostgreSQL config change improved slow query performance by 50x」というPostgreSQLのSSD環境でのチューニングの記事を見つけたのですが、これをTweetしたらRTやLikeを比較的たくさん頂きました。 How a single PostgreSQL config change improved slow query performance by 50x https://amplitude.engineering/how-a-single-postgresql-config-change-improved-slow-query-performance-by-50x-85593b8991b0 How a single PostgreSQL config change improved sl
本日、「Hecatoncheir: The Data Stewardship Studio」という最近開発していた新しいツールをOSSとして公開しました。 Hecatoncheir: The Data Stewardship Studio https://github.com/snaga/Hecatoncheir 本ツールは、データベースのメタデータおよび実データの統計情報やプロファイルを用いることで、データ品質マネジメントおよびデータガバナンスを実施するデータスチュアードを支援することを目的としたソフトウェアです。 既に某所のデータウェアハウスのシステムの周辺で稼働しています。 本エントリでは、このツールの紹介をさせていただきます。(本ツールはPostgreSQLにも対応しております) ■本ツールを開発した背景 最近は、データウェアハウスの設計から構築、データマネジメント(ガバナンスやス
文書の類似度を計算する方法に「コサイン類似度」を用いる方法があります。 これは、出現する単語を出現回数などで数値化して、空間ベクトルに変換した上でベクトル同士の類似度を計算する、という手法です。 コサイン類似度 http://www.cse.kyoto-su.ac.jp/~g0846020/keywords/cosinSimilarity.html 最近、このコサイン類似度を使って、似ているデータを検索するWebアプリを試しに作っていたのですが、ふと、 「このコサイン類似度を使ったソート処理をPostgreSQLでどのように実装するともっとも高速な実装になるのだろうか。また、現実的なパフォーマンスを考えた時にデータ量や次元のサイズはどこまで増やせるのだろうか」 ということが気になりました。 PostgreSQLは、その拡張性の高さがウリの一つですが、そのため「UDFを作る」ということを考え
本エントリは PostgreSQL Advent Calendar 2016 の Day24 のエントリです。昨日は @mazudakz さんの「pg_stats_reporter をしくじった話」でした。読み応えあって面白かった。 さて、先日(と言っても結構前)、地理情報をPostgreSQLで扱う例として、巡回セールスマン問題をPostgreSQLで解きつつGoogle Mapsで可視化するエントリを書きました。 巡回セールスマン問題における最短経路をpgRoutingで探索する http://pgsqldeepdive.blogspot.jp/2016/09/pgrouting.html 今回は、もう少し進んでPostgreSQLにおける地理情報の検索とGoogle Mapsの動的な可視化を連動させてみましたので、その内容を紹介します。 実現したいことは、 観光に関連する情報をPos
今年も風物詩である PostgreSQL Advent Calendar の時期がやって参りました。Day1担当のデータマエショリスト @snaga です。 PostgreSQL Advent Calendar 2016 - Qiita http://qiita.com/advent-calendar/2016/postgresql 去年もDay1を担当した気がしますが、それはさておき。 余談ですが、今年のAdvent Calendarは [学生さん・初心者さん大歓迎!]Xamarin Advent Calendar 2016 - Qiita http://qiita.com/advent-calendar/2016/xamarin-welcome にも参加しております。また、 C# チュートリアル 全部俺 Advent Calendar 2016 - Qiita http://qiita
先日、PostgreSQLアンカンファレンスを開催した際、「pgRoutingを使って巡回セールスマン問題を解く」という発表を国府田さんがされていました。 第8回 PostgreSQLアンカンファレンス@東京(2016/9/10) - connpass http://pgunconf.connpass.com/event/37285/ 第8回 PostgreSQLアンカンファレンス ツイートまとめ - Togetterまとめ http://togetter.com/li/1023030 非常に面白そうな機能で、私も少し使ってみましたので、今回はその使い方や使用例などを含めてご紹介します。 ■「巡回セールスマン問題」とは何か 「巡回セールスマン問題」というのは、以下のようなものです。 巡回セールスマン問題(じゅんかいセールスマンもんだい、英: traveling salesman probl
数日前、Uberのブログで「Why Uber Engineering Switched from Postgres to MySQL」というエントリが公開されました。 Why Uber Engineering Switched from Postgres to MySQL - Uber Engineering Blog https://eng.uber.com/mysql-migration/ それに対して、PostgreSQLコミュニティ界隈でもいろいろなブログエントリが公開されました。 Robert Haas: Uber's move away from PostgreSQL http://rhaas.blogspot.jp/2016/08/ubers-move-away-from-postgresql.html On Uber’s Choice of Databases http:/
PostgreSQL 感動巨編 TF-IDF 3部作の最終回、「性能改善編」です。 TF-IDFでデータベース内の類似テキストを検索する Part 1 (基本機能編) http://pgsqldeepdive.blogspot.jp/2016/07/tf-idf-part-1.html TF-IDFでデータベース内の類似テキストを検索する Part 2 (実践編) http://pgsqldeepdive.blogspot.jp/2016/07/tf-idf-part-2.html 前回の最後で、今回作成した UDF である euclidean_distance の処理に時間がかかってそうだ、ということが分かってきました。 そのため、本エントリではこの UDF をもう少し詳細に見ながら、パフォーマンスを改善する方法を探ります。 ■euclidean_distanceの性能分析 処理時間がか
先日、次期メジャーバージョンの9.6のbeta2がリリースされました。 PostgreSQL 9.6 Beta 2 Released https://www.postgresql.org/about/news/1677/ 9.6では、集約関数やJOINなどもパラレルクエリに対応しており、パラレル処理されるようになっていますので、みなさんはもちろんパラレルクエリをゴリゴリと検証されている最中かと思います。 また、言うまでもないことですが、パラレルクエリはデータ分析のためにあり、データ分析といえばPythonなわけです。 本エントリでは、そんなパラレルクエリとデータ分析大好きな方たちに向けて、パラレル処理が可能な集約関数をPL/Pythonで作成する方法を紹介します。 前提としているバージョンは、PostgreSQL 9.6 beta2 です。 ■PL/Pythonでの集約関数の作成 パラレル
MADlibは、現代的なデータ分析には欠かせない回帰分析やデータマイニングのアルゴリズムが実装されているオープンソースのライブラリです。 MADlibを導入することによって、これらのアルゴリズムをPostgreSQLのユーザ定義関数の形で使うことのでき、データベースサーバの内部でデータ分析の処理できるようになります。 今回は、このMADlibの導入方法から動作確認、ロジスティック回帰分析における簡単な使い方までをご紹介します。 ■MADlibとは何か MADlibは、もともとはGreenplumというPostgreSQLをベースにしたMPP製品(DWH用RDBMS)を開発していた企業が開発していたライブラリで、Greenplumで利用できるように開発されていたものでした。 2015年9月に、Greenplum(を買収したEMC)がMADlib(や他のソフトウェア類)をApache Foun
先月、弊社にデータベース系の研究をしていた中国人留学生がインターンに来ており、その彼にお願いしてPostgreSQLのパラレルクエリのスケーラビリティの調査と、プロファイリング+可視化のツールとしてFlameGraphを使ってもらいました。 大学のスケジュールの関係上、インターンの期間が急遽、3週間から2週間に短縮されてしまったため、結果をきちんとまとめたり追試をしたりといったところまでは到達できなかったのですが、個人的にもそれなりに面白いアウトプットになったと思いますので、簡単にご紹介したいと思います。 なお、細かい手順の詳細などは、インターンに参加していた学生さんのGithubにまとまっています。参考文献に載せておきますので、興味のある方はそちらも参照してください。(本テストと直接関係のない内容も含まれています) ■テストの背景 PostgreSQLの9.6develにパラレルシーケン
今年もこの季節になりました。PostgreSQL Advent Calendar 2015のDay1の記事です。 今回は、現在開発中のPostgreSQL 9.6に実装されたパラレルシーケンシャルスキャンについて、動作確認とフラッシュストレージでの簡単な性能検証をしてみようと思います。 なお、現在開発中の機能ですので、正式リリースされる時には仕様や動作などが変わっている可能性があることをご了承ください。 ■「パラレルシーケンシャルスキャン」とは 「パラレルシーケンシャルスキャン」は、その名の通り、シーケンシャルスキャンを並列処理する機能です。 今まで、PostgreSQLでは1つのCPUを使ってシングルスレッド(というかプロセス)でしか処理をすることができませんでした。 しかし、直近のPostgreSQLのメジャーバージョンの拡張を見ていた方はご存じの通り、PostgreSQLではパラレル
本日、「Postgres Advanced Security Pack」というパッケージのプレビュー版をリリースしましたので、ご紹介させていただきます。 ■「Postgres Advanced Security Pack」とは何か? 「Posetgres Advanced Security Pack」は、オープンソースで公開されている PostgreSQL のセキュリティ関連の拡張を複数まとめてビルド、RPMパッケージにしたものです。 PostgreSQLの拡張モジュールは、別々の開発者によって個別に開発・配布されているため、自分自身の環境で導入しようとすると手間がかかったり、あるいは単に知られていなかったりしますが、それらの問題を解決して、より簡単に導入できるようにすることを目的としてパッケージ化したものです。 このパッケージを使うことによって、PostgreSQLデータベースにセキュリ
先日、sql_firewallというPostgreSQLの拡張モジュール(EXTENSION)をリリースしました。 https://news.ycombinator.com/item?id=10109566 https://github.com/uptimejp/sql_firewall このモジュールは、PostgreSQL上で実行可能なSQLを制限することで、SQLインジェクションを防ぐことを目的としたものです。 今回はこの sql_firewall について、その仕組みと使い方を簡単にご紹介します。 ■sql_fiewallの仕組み sql_firewallには、以下の3つの動作モードがあります。 学習モード(learning) 警告モード(permissive) 防御モード(enforcing) 学習モードではPostgreSQL上で実行可能なSQL文を学習させることができます。
PostgreSQL Advent Calendar 2012(全部俺)のDay 23です。 今回は、PostgreSQLにおけるテーブルパーティショニングの機能を取り上げます。 BigDataやデータ分析といったキーワードが多く聞かれるようになってきましたが、PostgreSQLでも大きなデータに対する集計処理のパフォーマンスを向上させるための機能が提供されています。 ■「テーブルパーティショニング」 RDBMSにおける「テーブルパーティショニング」と呼ばれる機能には、ディスクへのアクセスを「局所化させる」、または「分散させる」ために提供されている機能です。これらの機能を使うことによって、大規模なデータを対象とした集計系の処理のパフォーマンスを向上させることができます。 RDBMSにおけるパーティションの種類には大きく分けて3つの種類があります。(正確には、2つとそのコンビネーションです
この記事はPostgreSQL Advent Calendar 2014の12/3の記事です。 12月5日(金)にPostgreSQLユーザの方にはおなじみのPostgreSQLカンファレンスが開催されます。 PostgreSQLカンファレンス2014 ― NPO法人 日本PostgreSQLユーザ会 http://www.postgresql.jp/events/jpug-pgcon2014 私も企画に少しかかわっていますので、このエントリでは今回のカンファレンスの見どころをご紹介してみようと思います。 ■5トラック同時進行で多彩なセッション 今回のカンファレンスは、レギュラーセッションに加えてさまざまな企画系のセッションがあります。 キーノートセッション ハンズオンセッション レギュラーセッション チュートリアルセッション インターナショナルセッション キーノートやレギュラーセッション
最近、精力的にPostgreSQL関連の検証や技術情報の公開をしている日本HPさんから、「PostgreSQL Internals」という技術文書がPDFで公開されました。 日本HP ITサービス「HP OPEN SERVICES」 http://h50146.www5.hp.com/services/ci/opensource/ 上記ページの下の方に「PostgreSQLエンジニア向け!ストレージ内部構造および内部動作検証報告」というタイトルのPDFファイルをダウンロードすることができます。 PostgreSQLエンジニア向け!ストレージ内部構造および内部動作検証報告 http://h50146.www5.hp.com/services/ci/opensource/pdfs/PostgreSQL_Internals.pdf 章レベルで目次を抜き出すと以下のような内容になっています。 本文
このエントリは、PostgreSQL Advent Calendar 2013のDay15の記事です。 データベース管理システムにとって、「データを保護する」というのは非常に重要な役割のひとつです。 PostgreSQLには、9.3から「データチェックサム」という機能が追加されました。これは、ハードウェア障害などによってデータが壊れた時に、そのことを極力早期に検出しよう、という仕組みです。 今回は、このデータチェックサムについて、その仕組みと使い方、性能への影響について紹介します。 ■「データチェックサム」とは 「データチェックサム」というのは、PostgreSQLのデータブロック内のデータのチェックサムのことで、PostgreSQLのデータブロックの中身が万が一壊れた時に、早期に検出できるようにするための仕組みです。 9.2まではこの機能が無かったため、「(メモリやディスク不良が起因で)
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く