タグ

PostgreSQLに関するunaristのブックマーク (35)

  • 【翻訳】 On Uber’s Choice of Databases (データベースにおけるUberの選択について)

    数日前、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:/

    【翻訳】 On Uber’s Choice of Databases (データベースにおけるUberの選択について)
  • とあるクエリを2万倍速にした話 -データベースの気持ちになる- 後編 - dwango on GitHub

    技術コミュニケーション室 OSSグループの髙﨑です。 記事は、とあるクエリを2万倍速にした話 -データベースの気持ちになる- 前編の続きです。 前回の記事でお話しした内容がPullRequestを作ったときの過程だったわけですが、 そのような結果に至った経緯、Index Only Scanを使わなかったPostgreSQL特有の事情について、 PostgreSQLのアーキテクチャなども交えもう少し詳しくお話させていただきます。 要するに 実行計画のコストとはレコードやindexの読み込み、フィルタ処理などからその実行にどの程度の時間が必要となるかの推定値 indexを張る際にはそのindexがどのように辿られるかを意識する必要がある 範囲検索される可能性があるカラムはindexの先頭にはあまり適さない PostgreSQLにおけるIndex Only Scanは新しい/更新頻度の高いデー

    とあるクエリを2万倍速にした話 -データベースの気持ちになる- 後編 - dwango on GitHub
  • Robert Haas: The State of VACUUM

    VP, Chief Database Scientist @ EnterpriseDB, PostgreSQL Major Contributor and Committer In a recent blog post, I talked about why every system that implements MVCC needs some scheme for removing old row versions, and how VACUUM meets that need for PostgreSQL. In this post, I’d like to examine the history of VACUUM improvements in recent years, the state of VACUUM as it exists in PostgreSQL today,

  • Docker構成のMastodonに後からpgBouncerを組み込む - たていすのメモ2

    背景 mastodon.juggler.jp はここ数日はサーバの人数1100〜1050、1日間のアクティブユーザ270人くらいで人数はあまり変わってません。しかしユーザ間のフォローが増えるにつれて、発言、ブースト、お気に入りで発生するFan-outが大量にsidekiqのキューに積まれるのが目立ってきました。特にdefaultキューに処理が溜まるとユーザへの応答性が低下します。 Push通知は計算よりも通信待機が多いのでキューを処理するスレッドを増やすのが効果的です。 それに必要なのがCPU、メモリ、そしてDBサーバへの接続数です。 今回はDBサーバへの接続数を稼ぐために、DBサーバとアプリケーションの間にpgBouncerを設置してみます。 期待される効果 Docker構成のMastodon で使われているDBサーバの初期設定では max_connectionが100 になっていますが

    Docker構成のMastodonに後からpgBouncerを組み込む - たていすのメモ2
  • PostgreSQLの実行計画を読み解くための参考資料集 - ぱと隊長日誌

    はじめに PostgreSQLは商用DBに比べて書籍が少なく、まとまった情報が入手しにくいです。また、有志の方がPostgreSQLに関する資料を公開していますが、散在しており、せっかくの有益な情報にアクセスしにくい状況にあります。 そこで、エントリではPostgreSQLの実行計画に焦点を絞り、公開されている有用な資料(書籍含む)をまとめました。読み返したい資料を探しやすくするため、内容のポイントも併せて紹介してます。 エントリをきっかけに、これらの資料がさらに活用されることを願っています。 前提 各資料の前提としているPostgreSQLのバージョンは異なることにご注意ください。調査対象のPostgreSQLのバージョンが異なれば、状況は変わっているかもしれません。 各資料には内容の重複があり、ほぼ同一内容の場合もあります。重複している内容についてはポイントから割愛することがありま

    PostgreSQLの実行計画を読み解くための参考資料集 - ぱと隊長日誌
  • PostgreSQL のトランザクション & MVCC & スナップショットの仕組み

    このページでは PostgreSQL のトランザクション(Transaction)、Multi Version Concurrency Control(MVCC)、スナップショット(Snapshot)の仕組みを説明する。 PostgreSQL の他の記事へのインデックスはここ。 更新履歴 (2016.04.30) 作成。 (2016.09.16) データ定義言語(DDL)のトランザクションを追加。 (2016.09.28) データ定義言語(DDL)の MVCC アンセーフ動作を追加。 (2017.04.07) Combo Command ID の説明が間違っているのを修正。 目次 1. はじめに 2. トランザクション分離レベル(Transaction Isolation Level) 3. Serializable 以外の分離レベルの実現方法 3.1 トランザクションとと可視性(Visi

  • SIOS "OSSよろず" ブログ出張所: GIN を利用したタグ検索の最適化

    SIOS "OSSよろず"ブログ出張所はサイオスが新たにオープンしました「SIOS Tech.Lab」ブログに移設します。 新サイトのURLは下記となります。引き続きのご愛読をよろしくお願いします。 https://tech-lab.sios.jp/ こんにちは、OSS テクノロジーセンターの渡辺です。 今回は PostgreSQL の配列型と GIN インデックスを使用したタグシステムについて解説します。 はじめに データにタグを付けて分類するシステムは多くあります。タグはデータ分類を行う為によく利用される仕組みで、様々なアプリケーションに利用されています。 タグを使ったシステムの特徴 タグの名前が自由に登録できる 一つのデータに対して、タグを任意の数、設定できる 任意のタグ名を任意の数、指定して検索できる タグはデータを分類する仕組みとして柔軟で便利な仕組みですが、検索する場合のコスト

    SIOS "OSSよろず" ブログ出張所: GIN を利用したタグ検索の最適化
  • MySQL使いが知るべきPostgreSQLとの違いと変わらない一つのこと

    — そーだい@初代ALF (@soudai1025) 2015, 8月 24 とブーメラン投げて見事に刺さってるので今から記事書く。 両サイドにはかなり厳しい話もするが俺の音を聴いておけ(関白宣言) まぁ歴史の長いRDBなのでお互いの比較記事は沢山ある。 なのでマルチスレッド(MySQL)とマルチプロセス(PostgreSQL)だとかVACUUMだって話はしない。 むしろ実際に使ってみた際の違いをにフォーカスする。 1. SQLの違い 基的にMySQLでやっていたことはPostgreSQL出来る。 しかし関数の挙動の違いは幾つかある。 例えば時間から曜日に該当する数字に変換した場合に MySQL → date_format(time,"%w") 0から始まり、日曜日に該当する PostgreSQL → to_char(time,'D') 1から始まり、日曜日に該当する など挙動に互換性

    MySQL使いが知るべきPostgreSQLとの違いと変わらない一つのこと
  • PostgreSQLで日本語全文検索 - LIKEとpg_bigmとPGroonga - 2015-05-25 - ククログ

    PostgreSQLアンカンファレンス@東京(2015/5/30)でPostgreSQLの日語全文検索まわりについて紹介しようかとたくらんでいます。しかし、現時点(2015-05-25)でキャンセル待ちで、当日参加できないかもしれないので紹介しようと用意している内容をここにまとめます。 内容 この資料の目的は、PostgreSQLで使える次の3つの方法の特性を紹介し、ユーザーが適切な方法を選択するための材料を提供することです。 LIKE pg_bigm PGroonga(ぴーじーるんが) LIKE LIKEのメリット・デメリットは次の通りです。 メリット 標準で使える インデックス作成不要(= データ更新が遅くならない) データが少なければ十分速い デメリット データ量に比例して遅くなる ユーザーがLIKEを使うかどうかの判断基準は「十分速いかどうか」(= 「データが少ないかどうか」)で

    PostgreSQLで日本語全文検索 - LIKEとpg_bigmとPGroonga - 2015-05-25 - ククログ
  • PostgreSQLウィンドウ関数のTips | POSTD

    大変そうに見えるが簡単 ウィンドウ関数を使用するためには、OVER()句で”ウィンドウ関数の構文”を用いる必要があります。サンプルテーブルを作成し、それを使って全てのウィンドウ関数に対する例を挙げてみましょう。 この例では、14名の学生が居るクラスを管理しています。 -- Creating the table CREATE TEMP TABLE students ( id serial, name text, grade int DEFAULT NULL, last_seen_in_class date ); -- Adding some students INSERT INTO students (name, grade, last_seen_in_class) VALUES ('Jacob', '9', '2014-08-16'), ('Michael', '6', '2014-08-

    PostgreSQLウィンドウ関数のTips | POSTD
  • Rails で、Controller に定義されている action を一度に取得する方法はありますか? - QA@IT

    平素よりQA@ITをご利用いただき、誠にありがとうございます。 QA@ITは「質問や回答を『共有』し『編集』していくことでベストなQAを蓄積できる、ITエンジニアのための問題解決コミュニティー」として約7年間運営をしてきました。これまでサービスを続けることができたのは、QA@ITのコンセプトに共感をいただき、適切な質問や回答をお寄せいただいた皆さまのご支援があったからこそと考えております。重ねて御礼申し上げます。 しかしながら、エンジニアの情報入手方法の多様化やQAサービス市場の状況、@ITの今後のメディア運営方針などを検討した結果、2020年2月28日(金)15:00をもちましてQA@ITのサービスを終了することにしました。 これまでご利用をいただきました皆さまには残念なお知らせとなり、誠に心苦しく思っております。何とぞ、ご理解をいただけますと幸いです。 QA@ITの7年間で皆さまの知識

    Rails で、Controller に定義されている action を一度に取得する方法はありますか? - QA@IT
  • NTT DATA と PostgreSQL が挑んだ総力戦 裏話

    ■PostgreSQLしくみ勉強会(2015/01/31) 発表資料 NTT DATA と PostgreSQL が挑んだ総力戦 裏話 ~セミナでは話せなかったこと~

    NTT DATA と PostgreSQL が挑んだ総力戦 裏話
  • NTTデータとPostgreSQLが挑んだ総力戦。PostgreSQLを極限まで使い切ったその先に見たものとは?(前編) NTTデータオープンソースDAY2015 - Publickey

    NTTデータとPostgreSQLが挑んだ総力戦。PostgreSQLを極限まで使い切ったその先に見たものとは?(前編) NTTデータオープンソースDAY2015 現在のシステム構築では、オープンソースのソフトウェアを使うことは当たり前になってきています。PostgreSQLはそうした中で主にエンタープライズ向けのデータベースとして着実に事例を増やしてきています。 その中で、PostgreSQLを大規模なミッションクリティカルなシステムの中で使うには、どのようなノウハウが求められるのか。オープンソースの利用に積極的なNTTデータがその事例を、1月26日に開催されたイベント「NTTデータオープンソースDAY 2015」のセッション「NTTデータとPostgreSQLが挑んだ総力戦。PostgreSQLを極限まで使い切ったその先に見たものとは?」で紹介しています。講演内容をダイジェストにしまし

    NTTデータとPostgreSQLが挑んだ総力戦。PostgreSQLを極限まで使い切ったその先に見たものとは?(前編) NTTデータオープンソースDAY2015 - Publickey
    unarist
    unarist 2015/06/22
    スライドには記事に載ってない話もあった
  • PostgreSQLで数え年計算

    まさかまさかの4回目。いま宝くじを買えば3億当確の安元です。 最近肩こりがひどいので、昨日からピップマグネループつけてます。 そちらのレビューはまた今度。ビバ!プラシーボ!! さて題。 最近めっきり聞くことも少なくなった「数え年」。皆さんご存じでしょうか? ウィキペディアさんに聞いてみました 数え年(かぞえどし)とは年齢や年数の数え方の一つである。生まれた時点、基点となる最初の年を「1歳」、「1年」とし、以降元日(1月1日)を迎えるごとにそれぞれ1歳、1年ずつ加える(例:12月31日に出生した場合、出生時に1歳で翌日(1月1日)に2歳となる。また1月1日に出生した場合は、2歳になるのは翌年の1月1日になる)。数え歳とも、単に数えともいう。 これに対し、誕生日前日午後12時に加齢、加年する数え方を満年齢、満という。稿においては主に年齢に関する事柄について記述する。 これ日独自のものかと

    PostgreSQLで数え年計算
  • Running SQL scripts with psql

    unarist
    unarist 2014/12/13
    psqlコマンドでSQLスクリプトを実行するときにつけたいオプションまとめ。多いな・・・。
  • PostgreSQL プラン・ツリーの概要

    このページでは PostgreSQL のプラン情報を保持するノード・ツリーの概略を解説する。 また PostgreSQL の生成するプランのノード・ツリー情報を可視化するために、Graphviz の dot ファイルとして書き出すエクステンション pg_plan_tree_dot を紹介する。 PostgreSQL 体の改造やエクステンションを作成するために、プランを変更しようとする人向けの記事である。 現在は pg_plan_tree_dot は Linux の PostgreSQL 9.x 上でだけ動作する。 PostgreSQL の他の記事へのインデックスはここ。 更新履歴 (2014.11.30) 作成。 (2015.12.13) エクスプレッション・ノードとプラン・ノードを追加 (2016.09.24) Join と TargetEntry の説明を追加 (2017.01.07

  • http://kwatch.houkagoteatime.net/blog/2014/12/02/postgresql-book/

    http://kwatch.houkagoteatime.net/blog/2014/12/02/postgresql-book/
  • pg_dbms_stats

    名前 pg_dbms_stats -- 統計情報の管理を行い、間接的に実行計画を制御します。 概要 PostgreSQL は ANALYZE コマンドによりテーブルやインデックスからサンプリングした値を集計して統計情報として保持しています。 クエリ・オプティマイザは、この統計情報を利用してクエリのコストを計算し、最もコストの低い実行計画を選択します。このため、データの量や特性が変化したり、統計情報の精度が不十分であったりした場合には、選択される実行計画が変化する場合があります。 pg_dbms_stats パッケージはこのような予期せぬ実行計画の変化を防ぐための機能拡張です。プランナの処理に割り込んで、プランナが参照する統計情報を事前に作成したダミー統計情報に差し替えることで、選択される統計情報を固定します。「実行計画が運用中に急に変化し、システムの性能が低下する」というリスクを抑えたい場

    pg_dbms_stats
    unarist
    unarist 2014/12/05
    プランナが参照する統計情報を固定することで、SQLの実行計画が意図せず変わるのを防ぐ拡張
  • How do you create a read-only user in PostgreSQL?

    Grant usage/select to a single table If you only grant CONNECT to a database, the user can connect but has no other privileges. You have to grant USAGE on namespaces (schemas) and SELECT on tables and views individually like so: GRANT CONNECT ON DATABASE mydb TO xxx; -- This assumes you're actually connected to mydb.. GRANT USAGE ON SCHEMA public TO xxx; GRANT SELECT ON mytable TO xxx; Multiple ta

    How do you create a read-only user in PostgreSQL?
  • pg_pconnectに気をつけろ!! - elf's blog

    37歳になりました.いい年こいて相変わらずいきます. PHPであればpg_pconnect、Java+TomcatであればTomcatのコネクションプール機構をそのまま、その他アプリケーションフレームワークのレベルで提供されるコネクションプール機構があるようならそれを、必ず使うべきだ。 pg_pconnect()ってこれね. PHP: pg_pconnect - Manual 経験上pg_pconnect()を使うと気であまり接続が切れません.切れる条件としては多分この辺. httpdがMaxRequestsPerChildなりSEGFAULTの都合で死んだ PostgreSQL側の設定でtimeoutした initscriptなりで停止や再起動させた その上でhttpdって何をするかというと,いわゆるHTMLやXML(フィードなど)の生成処理をするだけじゃなく,画像の処理もするんですね

    pg_pconnectに気をつけろ!! - elf's blog