http://archives.postgresql.org/pgsql-hackers/2009-06/msg00159.php Postgresqlのmemory managerで、空きブロックリストのインデックスを計算する処理を高速化するパッチ。 現在のコードは、以下のようにループして計算しているが static inline int AllocSetFreeIndex(Size size) { int idx = 0; if (size > 0) { size = (size - 1) >> ALLOC_MINBITS; while (size != 0) { idx++; size >>= 1; } Assert(idx < ALLOCSET_NUM_FREELISTS); } return idx; }これを、x86 CPUのbsrで計算するようにした static inlin
シンプルなINSERTを行ったときの呼び出しシーケンス。ページにタプルを追加するところまで。 (gdb) bt #0 PageAddItem (page=0xb5835260 "", item=0x84e4d04 "J\002", size=28, offsetNumber=3, overwrite=0 '\0', is_heap=1 '\001') at bufpage.c:249 #1 0x080a2cf8 in RelationPutHeapTuple (relation=0xb561a2f8, buffer=101, tuple=0x84e4cf0) at hio.c:43 #2 0x0809dbb8 in heap_insert (relation=0xb561a2f8, tup=0x84e4cf0, cid=2, use_wal=1 '\001', use_fsm=1 '\00
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く