タグ

ブックマーク / www.nminoru.jp/~nminoru (5)

  • PostgreSQL の基本データ要素とタプルの扱い

    このページでは PostgreSQL をハックしたりエクステンション(extension)を開発する人向けに、PostgreSQL の扱っているデータ型の内部とタプルの内部構造について紹介する。 PostgreSQL の他の記事へのインデックスはここ。 更新履歴 (2016.09.18) 作成。 (2017.04.01) attisdropped の情報を追記。 目次 1. はじめに 2. 基的なデータ型 2.1 Datum の操作 2.2 データ長の取得 2.3 コピー操作 2.4 入出力変換操作 3. varlena 型 4. Heap Tuple と Minimal Tuple 4.1 Heap Tuple 4.1.1 t_infomask、t_infomask2 4.2 Minimal Tuple 5. Tuple Descriptor 6. TupleTableSlot 6.1

  • 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

  • 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

  • スタックオーバーフローのハンドリング (Stack Overflow Handling)

    作成日:2004.04.12 更新日:2006.02.19 更新記録 (2004.04.12) 3/6、 3/11、 3/13 の日記をまとめて作成。 (2004.05.07) 文章を修正。サンプルコードを追加。 (2005.01.20) alternative → alterante に修正。 (2005.02.13) 追記を記述。 (2006.02.17) linux_stack_info.cpp の実装に誤りがあったので修正。 (2006.02.19) BSD 系OS でのスタック領域情報の取得の仕方を追加 初めに C/C++ でプログラムをしているとつい忘れてしまうのがスレッドのスタックオーバーフローの問題。 最近の OS はスレッド当たり 2〜8MB のスタック領域を持っているため、よほどのことがない限りスタックが溢れてしまうことはない。 だが、再帰や alloca を積極的に使

  • ビットを数える・探すアルゴリズム

    作成日:2004.05.04 修正日:2012.09.01 このページは 2003年の9/11、9/28 の日記をまとめて作成。 はじめに PowerPC 系や Alpha などには population count と呼ばれるレジスタ中の立っているビット数を数える命令が実装されている。 集合演算を行うライブラリを実装したい場合などに重宝しそうな命令である。 職場でこの population count 命令について話をしているうちにビットカウント操作をハードウェアで実装するのは得なのか?という点が議論になった。 CPU の設計をできるだけシンプルにするためには、複雑で使用頻度の低い命令は極力減らした方がよい。 例えば SPARC は命令セット中にビットカウント演算があるが、CPU 内には実装しないという方針をとっている(population 命令を実行すると不正命令例外が発生し、それを

    orangeclover
    orangeclover 2006/08/15
    アルゴリズム
  • 1