この記事はPostgreSQL Advent Calendar 2016の9日目の記事です。 はじめに 昨日、開発中のPostgreSQL10.0についにパーティショニング専用の構文が導入され次のバージョンもとてが楽しみです。パーティショニングについての記事にしようかと思ったのですが、それは別の誰かが書いてくれると期待し、本日分では、PostgreSQLの最新バージョンである9.6にパラレルクエリが導入されパラレル化が熱い今、PostgreSQLのパラレル機構を使って並列プログラミングをする方法をご紹介します。 サンプルプログラムとしてpg_foobarというEXTENSIONを作成しました。githubリポジトリからダウンロードしてください。 実行例 pg_foobar EXTENSIONではpg_foobar()関数を用意しており、SELECT pg_foobar(2, 3, 4)と実
Uber-migrated-pg-to-mysql.md Why Uber Engineering Switched from Postgres to MySQL - Uber Engineering Blog のまとめ Posgresqlだと pgは追記型なので少しの更新でも多くのdiskへのwriteがおきる カラムを一つ更新しただけで多くのindexの書き換えが起こる よって、replicationはWALを送るので更新が多いとWALが大量に送られる repcliationでは物理的なdiskの変更を送る DC間でレプリするときつい bugがあってreplica間でMVCCの不整合が起きる masterとreplica同じdisk上のデータ構成を共有するのでupgradeがつらい cache readはsyscallとosのpage cache経由なので重い 1コネクション1プロセス
1. Introduction to Apache Kafka And Real-Time ETL for DBAs and others who are interested in new ways of working with relational databases 1 2. About Myself • Gwen Shapira – SystemArchitect @Confluent • Committer @Apache Kafka,Apache Sqoop • Author of “HadoopApplicationArchitectures”, “Kafka – The Definitive Guide” • Previously: • Software Engineer @ Cloudera • OracleACE Director • Senior Consultan
2. 2 自己紹介 ▌名前: 海外 浩平 ▌会社: NEC ▌仕事: PG-Stromプロジェクト リーダー PostgreSQL及び他のOSSプロジェクトへの コントリビューション PG-Stromを軸とした事業立上げ ▌PG-Stromプロジェクト ミッション: ヘテロジニアス計算や不揮発メモリなど、新たな半導体技術の進化の 成果を全てのユーザの元へ届ける。 2012年に海外個人の開発プロジェクトとしてスタート。 現在はNECがファンドしている。 完全なオープンソースプロジェクト(GPL v2) PGconf.JP 2015 - What TPC-DS tells us and further enhancement
ユーザー情報 CREATE USER(createuser)で作成する。変更はALTER USER。削除はDROP USER(dropuser)。 照会は以下の様なSQLで行う。 select * from pg_shadow; ←権限がある人のみ実行可能。パスワードも見られる。 pg_shadowで表示されるパスワードは、MD5形式の時は暗号化されている。文字列の先頭がmd5になっていたような…。 select * from pg_user; ←権限が無くても実行可能。パスワードは見られない。 select current_user, session_user; ←現在のユーザーIDを表示する関数を使用 パスワードの設定は、以下の様にして行う。 ALTER USER ユーザー名 PASSWORD 'パスワード'; グループ情報 CREATE GROUPで作成する。変更はALTER GRO
2. 自己紹介 ▌名前: 海外 浩平 ▌所属: NEC OSS推進センター ▌好きなもの: コアの多いプロセッサ ▌嫌いなもの: コアの少ないプロセッサ ▌経歴: HPC OSS/Linux SAP GPU/PostgreSQL ▌Tw: @kkaigai ▌主な仕事 SELinux周り諸々 (2004~) •Lockless AVC、JFFS2 XATTRなど PostgreSQL周り諸々 (2008~) •SE-PostgreSQL、Security Barrier View、Writable FDWなど PG-Strom (2012~) DB Tech Showcase 2014 Tokyo; PG-Strom - GPGPU acceleration on PostgreSQL Page. 2 4. GPU (Graphic Processor Unit) の特
PostgreSQL 9.2より追加されたJSON型だが、特徴を理解して適切に使わないと色々な副作用に悩まされることになる。その問題点を挙げると共に、どのような場合に使うべきかの指針を示す。 PostgreSQLは、データ型としてjsonをサポートしています。しかし、やりたいことがある時に何でもかんでもjson型を使ってしまうというのはやめるべきです。これは、hstoreや新しく登場したjsonb型にも同じことが言えます。これらの型は必要な時には便利なツールになりますが、PostgreSQLでデータのモデリングを行う際に最初に検討すべきものではありません。 なぜなら、データを呼び出したり操作したりするのが難しくなってしまうためです。 何もかも同じところに入れてしまおうとすることによるアンチパターンをご存知の読者もいるでしょう。EAVアンチパターンは、長らくデータベーススキーマにおける必要悪
排他(ロック) RDB(Oracle)の機能の一つに、排他(ロック)がある。 SELECT ~ FOR UPDATE [2009-01-19] 排他のタイミング [2007-09-15] SELECT ~ FOR UPDATE レコードをロックするには、SELECT文でFOR UPDATEを指定する。[2009-01-19] SELECT * FROM emp WHERE empno=7902 FOR UPDATE; FOR UPDATEでは、自分がロックしたい対象を 他のトランザクションがロックしている場合に、待つかどうかを指定するオプションがある。 WAITだと、相手がロック解除(コミットまたはロールバック)するまで無期限に待つ。 NOWAITだと、即座に戻る。(ORA-00054「リソース・ビジー、NOWAITが指定されていました。」が発生する) 省略時はWAIT(無期限に待つ)。
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
Streaming Replication搭載のPostgreSQL9.0リリースが近づき、 MySQLとのレプリケーション比較が今後ますます盛んになると思われるので、 MySQLユーザ向けにPostgreSQLの説明をしてみようと思う。 参考->PostgreSQLユーザのためのMySQLバイナリログ・レプリケーション講座 (2012.10.30追記)PostgreSQLのレプリケーションについては書籍にまとめたので参照のこと。 原稿のサンプル:仕組みと設定を公開したので参照。 [レベル:1] PostgreSQLのWALログ PostgreSQLには「WALログ」と呼ばれるREDOログ(トランザクションログ)がある。MySQLでいうところのInnoDBのinnodbログのことである*1。 なぜレプリケーションの説明に"WALログ"がでてくるかといえば、PostgreSQL9.0のレプリ
図1はPostgreSQLのファイル構造を示したものです。図中、四角で示したものは論理的な構造を意味し、円柱は物理的に実在するファイルを示しています。 最初にPostgreSQLをインストールした後に、データベース領域を初期化(initdbコマンドを実行)した直後には、templete0,templete1というデータベースが作成され、基本構造が生成されます。 ここで言う「データベース」はOracleでいうそれとは違う意味なので注意して下さい。このとき生成されるデータベース基本構造全体を指して"データベース・クラスタ"と言います。 templete0とtemplete1は文字通りユーザが作成するデータベースの雛形で、ユーザが新規にデータベースを作成した場合は、templete1がコピーされ、同じ高さに並列して作成されます。 図1には示していませんが、システムカタログは$PGDATA/glo
Is it possible, perhaps using DB-triggers to set a maximum table-size in a postgres DB? For example, say I have a table called: Comments. From the user perspective, this can be done as frequently as possible, but say I only want to store the 100 most recent comments in the DB. So what I want to do is have a trigger that automatically maintains this. I.e. when more than 100 comments are there, it d
S-JIS[2003-07-19] PostgreSQL7.2.1 SQL最適化メモ SQL実行の際は、PostgreSQLが実行計画を立て、最も効率のよい方法で実行される。 が、SQLの組み方によっては効率の悪い方法が選ばれることがあるので注意。 VACUUM ANALYZE PostgreSQL(プランナー)が実行計画を立てる際には、統計情報が使われる。 統計情報はVACUUM ANALYZEを実行していないと更新されない。SQLの実行が遅いと思ったら、まず真っ先にVACUUMすべし。 EXPLAIN SQLを実行する際に プランナーがどのような実行計画を立てるかについては、EXPLAINで確認できる。 検索方法の種類 ほとんどの場合はseq-scanよりindex-scanの方が速いが、EXPLAINでcostを見てみないと確かなことは分からない。 どちらを使うかはプランナーが統計情
SQL パワー - SQL チューニング SQL はどのように実行されるか SQL は非常に強力ですが、複雑な SQL 文を実行したときに、想像以上に時間がかかったことがあるかと思います。これは、PostgreSQL が、設計者・開発者の意図したとおりに実行されていないかもしれません。いや、もちろん、結果は正しい結果が返ってきていると思いますが(返っていないとしたらたぶん開発したプログラムのバグですよ)、その結果を求めるまでに、最適な道順を通ってないかもしれません。 大抵チューニングが必要なのは、select 文なので、ここでは select 文を中心に話を進めます。 SQL は、実行時に PostgreSQL サーバに渡され、PostgreSQL サーバがどのようにデータにアクセスしたらよいかを考えます。例えば次のような SQL 文があったとしましょう。 select 社員名称 from
[iplocks@del-vm146 iplocks]$ ps -aef | grep post | grep -v grep iplocks 18556 1 0 17:14 pts/2 00:00:00 /usr/bin/postmaster -i iplocks 18558 18556 0 17:14 pts/2 00:00:00 postgres: stats buffer process iplocks 18559 18558 0 17:14 pts/2 00:00:00 postgres: stats collector process iplocks 21209 18556 67 18:11 pts/2 00:01:27 postgres: iplocks iplocksdb [local] DELETE [iplocks@del-vm146 iplocks]$ psql ip
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く