再來講的是 rowid ...

先用一個 session 作 trsanction :
begin work ; update quote set ptrade = ptrade + 0.1
where id = "1101" ;
當我 onstat -k 時看到以下的結果 :

type tblsnum rowid
HDR+S 100002 205
HDR+IX 2002a3 0
HDR+X 2002a3 6f201
HDR+X 2002a3 f0002

從上一篇文中,知道 0x2002a3 是 sit2:quote 的 partnum ,
rowid 是啥?!... rowid 0xLLLLLLSS , 其中L 是 logical page in table,
S 是第幾個 slot ... 如果你在 onstat -k 看到 rowid 末兩位是 00 ,
表示是 page lock ,因為 row lock 的 table 必須細分到每個 slot ...
每一個 slot 都代表一筆資料!!!!

所以呢 , 我們的 case , 是一個 row lock 的 table , rowid = 6f201 ,
表示是 logical page 0x6f2 , 第一個 slot 的這筆資料,我們來看看 :
oncheck -pp 0x2002a3 0x6f2 slot 1 果然是 1101 ... 相同地 ,
oncheck -pp 0x2002a3 0xf00 slot 2 也是!!!!

從 0xf00 logical page 可以推算出 physical page 嗎?!...可以!!
0xf00 = 3840 , oncheck -pt sit2:quote 中有 extents 對照表 :
Logical Page Physical Page Size
0 284a8a 89
89 29543c 1520
1609 29b313 2520
所以,0xf00 應該是落在, chunk 2 的 physical page
0x9b313 起算的第 (3840 - 1520 - 89) = 2231 頁, 也就是 0x9bbca !!
用 oncheck -pP 2 0x9bbca 可以得到驗證!!!

全站熱搜

hedgezzz 發表在 痞客邦 留言(0) 人氣()