PostgreSQL æ°æ®åå¨ç»æå为ï¼é»è¾å¨ååç©çåå¨
é»è¾åå¨ç»ææ¯KingbaseESå
é¨çç»ç»åç®¡çæ°æ®çæ¹å¼ã
ç©çåå¨ç»ææ¯æä½ç³»ç»ä¸ç»ç»åç®¡çæ°æ®çæ¹å¼ã
é»è¾åå¨ç»æéç¨äºä¸åçæä½ç³»ç»å硬件平å°ã
é»è¾åå¨ç»æåç©çåå¨ç»ææ¯åå«è¿è¡ç®¡çã
é»è¾ç»æå
æ¬
æ°æ®åºé群-Database cluster
æ°æ®åº-Database
表空é´-tablespace
æ°æ®åºå¨é»è¾ä¸åæå¤ä¸ªåå¨åå
ï¼ç§°ä½è¡¨ç©ºé´ã
表空é´ç¨ä½æé»è¾ä¸ç¸å
³çç»ææ¾å¨ä¸èµ·ã
æ°æ®åºé»è¾ä¸æ¯ç±ä¸ä¸ªæå¤ä¸ªè¡¨ç©ºé´ç»æã
æ°åå»ºçæ°æ®åºé»è®¤å建ä¸é¢ç表空é´ï¼
Catalogè¡¨ç©ºé´ åæ¾ç³»ç»è¡¨ä¿¡æ¯
Systemè¡¨ç©ºé´ åæ¾ç¨æ·æ°æ®
Temp表空é´
ç¨æ¥è®°å½æ°æ®åºé群çç¶æä¿¡æ¯ï¼å¦ï¼çæ¬ä¿¡æ¯ãé群æç®¡ççåç§æä»¶ä¿¡æ¯ãæ£æ¥ç¹ä¿¡æ¯ãäºå¡ç¶æä¿¡æ¯çã
æ¥å¿æä»¶ï¼data/REDOLOG
è®°å½æ°æ®ä¿®æ¹æä½çæ¥å¿ï¼ç¨äºç³»ç»åçæ
éæ¶è¿è¡æ°æ®æ¢å¤ã
ä¸´æ¶æä»¶ï¼data/DB
åæ¾æ°æ®åºè¿è¡è®¡ç®çè¿ç¨ä¸ï¼çæçåç§ä¸é´å¯¹è±¡ï¼å¦æåºè¿ç®çå¤åå½å¹¶åå
ã
åæ°æä»¶ï¼dataç®å½ä¸
æ°æ®æä»¶ç»æ
æ§å¶é¡µé¢ï¼æ§å¶é¡µé¢ç¨æ¥ç®¡çè¿äºæ°æ®é¡µé¢ã
æ°æ®åºå
±äº«ç¼åä¸ç空é´åå乿¯æé¡µä¸ºåºæ¬åä½, ä¸ä¸ªé¡µç大å°ä¸æ°æ®æä»¶ä¸é¡µç大å°ä¸è´, è¿æ ·ä¾¿äºæ´é¡µè¯»åæ°æ®æä»¶,å¹¶æ¾å
¥å°æ°æ®åºBufferä¸, ä»Bufferåå
¥æ°æ®æä»¶ä¹åçï¼ä¿è¯äºç¼å䏿°æ®æä»¶ç»æåå
容ä¸çä¸è´æ§ã
页é¢ç寻å
æ°æ®é¡µé¢æ¯ç±ä¸ä¸ªUint32çåé寻åãå 11 ä½è¡¨ç¤º fileid, å 21 ä½è¡¨ç¤ºæä»¶å
åç§»ã
Blockï¼åï¼
æ¦å¿µä¸åºæ¬çåäºPage, ä½Blockæ´å¤ç¨äºè¯´æDMSä¸å¯¹æ°æ®æä»¶ä¸Pageçæè¿°ã
ä¾å¦: 对æä»¶ç读åçæä½, æä»¶è¯»åä½ç½®çå®ä½, æ°æ®æä»¶ç©ºé´åæ¶çæä½, åä½åæ¯ä»¥åè¿è¡ã
æ°æ®åç大å°å¨ç³»ç»åå§åæ¶æå®ï¼é»è®¤æ¯8Kï¼å¯ä»¥åå¼4K,8K,16K,32Kã
Extentï¼åºï¼
ææ°æ®æä»¶ä¸8个è¿ç»çPageææç空é´ç§°ä¸ºä¸ä¸ªExtentãExtentæ¯æ°æ®åºè¿è¡æ°æ®æä»¶ç©ºé´åé
/éæ¾çåºæ¬åä½ãæ¯ä¸ªè¡¨ãç´¢å¼ãåºåå¯¹è±¡é½æ¯ç±è¥å¹²ä¸ªåºç»æãæ°æ®æä»¶è¢«å建åï¼é¤èªå¨ä¿çé¨ååºä½ä¸ºæ§å¶åºå¤ï¼å
¶ä»åºå
¨é¨å¤äºæªåé
ç¶æã表ãç´¢å¼ãåºåå¯¹è±¡çæææ°æ®é½åæ¾å¨Extentä¸ï¼å½åè¿äºExtent䏿å
¥æ°æ®æ¶ï¼è¥è¯¥Extentçææé¡µé¢é½å·²å 满ï¼ç³»ç»å°±ä¼èªå¨å¨æå±è¡¨ç©ºé´çæ°æ®æä»¶ä¸å¯»æ¾ä¸ä¸ªå°æªåé
çåºï¼å¹¶å°å
¶ç¶æä¿®æ¹ä¸ºæ°æ®åºã
ç¨äºç©ºé´ç®¡ççæ§å¶é¡µé¢ï¼PFS/GAM/IAMã
ç¨äºå¢éå¤ä»½çæ§å¶é¡µé¢ï¼DCMã
夿å¯è§æ§çæ§å¶é¡µé¢ï¼VMã
é¢ççæ§å¶é¡µé¢ï¼BCM/SGAMã
Page Free Space,ç®ç§°PFS页.
åè½ï¼ç¨äºè®°å½æ¬æ°æ®æä»¶ä¸é¡µé¢ç空é´ä½¿ç¨æ
åµã对æä»¶ä¸çæ¯ä¸ªé¡µé¢ï¼PFSä¸é½æä¸ä¸ªâåèâä¸ä¹å¯¹åºï¼è¯¥åèè®°å½äºè¯¥é¡µé¢çç¶æã
æ¯ä¸ªé¡µé¢å¯è½æä¸ç§ç¶æ :
PFS_FREEï¼è¯¥é¡µé¢å·²è¢«ç©çåé
ï¼ä½å°æªåé
ç»ä»»ä½æ°æ®å¯¹è±¡ææ§å¶é¡µï¼
PFS_DATAï¼è¯¥å¯¹è±¡è¢«åé
ä½ä¸ºæ°æ®é¡µä½¿ç¨ï¼
PFS_CTRLï¼è¯¥å¯¹è±¡è¢«åé
ä½ä¸ºæ§å¶é¡µä½¿ç¨ï¼
PFS页å64bytes被é¢ç为页头, å©ä¸8
1024-64=8128ä¸å
±è¦ç8128
8K=64MB空é´.
æ
PFS页æ¯é8128个页é¢åºç°ä¸æ¬¡, ç³»ç»åå§åæç¬¬ä¸ä¸ªPFS页æ¾å¨æ°æ®æä»¶ç第äºä¸ªé¡µé¢ä½ç½®,å³:第1å·æ°æ®é¡µé¢, ç±æ¤å¯ç¥,第N个PFS页çä½ç½®å¨8128*N+1.
Global Allocation Mapï¼ç®ç§°GAM页ã
åè½:è®°å½æå¨æ°æ®æä»¶çExtentçåé
æ
åµï¼GAM页ä¸é¤GAM头å¤,å©ä¸ç©ºé´çæ¯ä¸ä½(bit)å对åºä¸ä¸ªExtentçåé
æ
åµãè¥æbitä½ä¸º1ï¼å表æè¯¥bit使å
³èçExtent已被åé
åºå»,å乿ªè¢«åé
ã
è¥ä¸ä¸ªGAM页é¢å¤§å°ä¸º8K,åé¤GAM头(64 bytes)å¤,ä¸ä¸ªGAM页颿è½è¦ççæä»¶èå´æ¯: (8
1024-64)
8
(8
8K),约4GB空é´ãæ¤å¤ï¼GAM页æ¯é8
8128
8个页é¢åºç°ä¸ä¸ªï¼ç³»ç»è¦æ±ç¬¬ä¸ä¸ªGAM页åºç°å¨æä»¶ç第3个页é¢ä½ç½®(å³:第2个索å¼ä½ç½®),ç±æ¤å¾ç¥,第N个GAM页çåºç°ä½ç½®æ¯: 8
8128
8*N+2
Index Allocation Mapï¼ç®ç§°IAM页ã
åè½ï¼æ¯ä¸ªIAM页åªé¶å±äºä¸ä¸ªæ°æ®åºå¯¹è±¡(ä¾å¦:表),ä½ä¸ä¸ªæ°æ®åºå¯¹è±¡å¯å
å«å¤ä¸ªIAM页,ç±æ¤å¯è§IAM页䏿°æ®åºå¯¹è±¡çå
³ç³»æ¯1对1ï¼èæ°æ®åºå¯¹è±¡ä¸IAM页çå
³ç³»æ¯1对å¤.
IAMçç»æä¸GAM页类似,é¤IAM头å¤,å©ä¸ç©ºé´çæ¯ä¸ä½(bit)å对åºçä¸ä¸ªä¸IAMç¸å
³çExtentãè¥æbitä½ä¸º1ï¼å表æè¯¥bit使å
³èçExtent已被åé
ç»è¯¥IAM,å乿ªè¢«åé
ãè¥ä¸ä¸ªIAM页é¢å¤§å°ä¸º8K,åé¤IAM头(64 bytes)å¤,ä¸ä¸ªIAM页颿è½è¦ççæä»¶èå´æ¯: (8
1024-64)
8
(8
8K),约4GB空é´ãä½ä¸GAMä¹ä¸åä¹å¤å¨äº:IAMçåºç°ä½ç½®ä¸åºå®,åªå¨å¨åå»ºæ°æ®åºå¯¹è±¡çæ¶åæåé
ã