2024-11-20

SourceURL:file:///home/cheng/bb/artical/BB系列文章002_PostgreSQL深度探秘_整數(shù).docx

BB系列文章002

PostgreSQL深度探秘:整數(shù)

SourceURL:file:///home/cheng/bb/artical/BB系列文章002_PostgreSQL深度探秘_整數(shù).docx

注:本文中使用的導(dǎo)出PostgreSQL表數(shù)據(jù)的工具pgexp和查看導(dǎo)出結(jié)果的工具bb可以在https://gitee.com/cheng719/bb.git下載, 包含了在linux下運(yùn)行的這些工具和說(shuō)明文檔者吁,如果需要其它平臺(tái)(例如AIX复凳、HPUX、Solaris等)(未支持這些平臺(tái)的原因手頭沒(méi)有編譯環(huán)境)育八,請(qǐng)聯(lián)系作者abusoft@sina.com。

如果要實(shí)現(xiàn)捕獲PostgreSQL數(shù)據(jù)庫(kù)的變化數(shù)據(jù)(CDC)以便用來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)的容災(zāi)掀宋、備份劲妙、復(fù)用等儒喊,需要掌握數(shù)據(jù)庫(kù)各種數(shù)據(jù)類型在磁盤(pán)里面實(shí)際存儲(chǔ)的內(nèi)容。


[if !supportLists]1.?[endif]PostgreSQL整數(shù)包含如下幾種類型:


整數(shù)類型存儲(chǔ)長(zhǎng)度描述范圍

smallint2小整數(shù)-32768~+32767

integer4整數(shù)-2147483648 to +2147483647

bigint8長(zhǎng)整數(shù)-9223372036854775808 to +9223372036854775807

smallserial2小自增整數(shù)1 to 32767

serial4自增整數(shù)1 to 2147483647

bigserial8長(zhǎng)自增整數(shù)1 to 9223372036854775807


[if !supportLists]2.?[endif]建立測(cè)試表侨颈,并且插入數(shù)據(jù):

create table test_int (

f_smallint smallint,

f_int integer,

f_big bigint,

f_smallserial smallserial,

f_serial serial,

f_bigserial bigserial );

insert into test_int values ( 100,101, 102, 103, 104,105 );

insert into test_int values ( 1000,1010, 1020, 1030, 1040,1050 );

insert into test_int values ( 10000,10100, 10200, 10300, 10400,10500 );


[if !supportLists]3.?[endif]使用工具pgexp導(dǎo)出表的數(shù)據(jù):

$ pgexp -o /tmp/11 -t public.test_int

1118221628[5] Export: bank.public.test_int

1118221628[5] OUT: writedSize=??143??rows=??3?dataSize=??143

Export: rows=3, Length=552

導(dǎo)出了3條記錄哈垢,結(jié)果存放在文件 /tmp/11耘分,文件長(zhǎng)度552绑警。


[if !supportLists]4.?[endif]使用工具bb查看導(dǎo)出的表的數(shù)據(jù):

$ bb -3 /tmp/11

create table bank.public.test_int (

????f_smallint???int2

?,?f_int????????int4

?,?f_big????????int8

?,?f_smallserial smallserial not null

?,?f_serial?????serial not null

?,?f_bigserial??bigserial not null

?);

insert into bank.public.test_int?(f_smallint,f_int,f_big,f_smallserial,f_serial,f_bigserial) values?(100,101,102,103,104,105),

(1000,1010,1020,1030,1040,1050),

(10000,10100,10200,10300,10400,10500);


[if !supportLists]5.?[endif]使用工具bb查看導(dǎo)出的表的數(shù)據(jù)的內(nèi)部表示方法:

$bb -2 /tmp/11

???R000 CC [????1]: 06

??????c0_0 [????2]: 0064???????????????????????????????????.d????????????????

??????c0_1 [????4]: 0000 0065??????????????????????????????...e??????????????

??????c0_2 [????8]: 0000 0000 0000 0066????????????????????.......f??????????

??????c0_3 [????2]: 0067???????????????????????????????????.g????????????????

??????c0_4 [????4]: 0000 0068??????????????????????????????...h??????????????

??????c0_5 [????8]: 0000 0000 0000 0069????????????????????.......i??????????

???R001 CC [????1]: 06

??????c1_0 [????2]: 03e8???????????????????????????????????..????????????????

??????c1_1 [????4]: 0000 03f2??????????????????????????????....??????????????

??????c1_2 [????8]: 0000 0000 0000 03fc????????????????????........??????????

??????c1_3 [????2]: 0406???????????????????????????????????..????????????????

??????c1_4 [????4]: 0000 0410??????????????????????????????....??????????????

??????c1_5 [????8]: 0000 0000 0000 041a????????????????????........??????????

???R002 CC [????1]: 06

??????c2_0 [????2]: 2710???????????????????????????????????'.????????????????

??????c2_1 [????4]: 0000 2774??????????????????????????????..'t??????????????

??????c2_2 [????8]: 0000 0000 0000 27d8????????????????????......'.??????????

??????c2_3 [????2]: 283c???????????????????????????????????(<????????????????

??????c2_4 [????4]: 0000 28a0??????????????????????????????..(.??????????????

??????c2_5 [????8]: 0000 0000 0000 2904????????????????????......).????


[if !supportLists]6.?[endif]數(shù)據(jù)類型為?smallint渴频、smallserial 的內(nèi)部表示:

數(shù)值數(shù)據(jù)庫(kù)文件內(nèi)部存儲(chǔ)

1000x0064

1030x0067

10000x03e8

10300x0406

100000x2710

103000x283c

即Postgresql存儲(chǔ)smallint卜朗、smallserial的方法就是按照大頭優(yōu)先( big endian)存儲(chǔ)2字節(jié)的小整數(shù)內(nèi)存變量到數(shù)據(jù)庫(kù)磁盤(pán)文件中聊替。


[if !supportLists]7.?[endif]數(shù)據(jù)類型為?integer培廓、serial?的內(nèi)部表示:

數(shù)值數(shù)據(jù)庫(kù)文件內(nèi)部存儲(chǔ)

1010x00000065

1040x00000068

10100x000003f2

10400x00000410

101000x00002774

104000x000028a0

即Postgresql存儲(chǔ)integer、serial的方法就是按照大頭優(yōu)先( big endian)存儲(chǔ)4字節(jié)的整數(shù)內(nèi)存變量到數(shù)據(jù)庫(kù)磁盤(pán)文件中泣港。


[if !supportLists]8.?[endif]數(shù)據(jù)類型為?bigint、bigserial?的內(nèi)部表示:

數(shù)值數(shù)據(jù)庫(kù)文件內(nèi)部存儲(chǔ)

1020x0000000000000066

1050x0000000000000069

10200x00000000000003fc

10500x000000000000041a

102000x00000000000027d8

105000x0000000000002904

即Postgresql存儲(chǔ)bigint呛每、bigserial的方法就是按照大頭優(yōu)先( big endian)存儲(chǔ)8字節(jié)的整數(shù)內(nèi)存變量到數(shù)據(jù)庫(kù)磁盤(pán)文件中坡氯。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末箫柳,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子库糠,更是在濱河造成了極大的恐慌涮毫,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,464評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件艘虎,死亡現(xiàn)場(chǎng)離奇詭異顷帖,居然都是意外死亡渤滞,警方通過(guò)查閱死者的電腦和手機(jī)妄呕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)绪励,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)唠粥,“玉大人,你說(shuō)我怎么就攤上這事大莫」俜荩” “怎么了烙丛?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,078評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵河咽,是天一觀的道長(zhǎng)忘蟹。 經(jīng)常有香客問(wèn)我搁凸,道長(zhǎng),這世上最難降的妖魔是什么杂腰? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,979評(píng)論 1 299
  • 正文 為了忘掉前任喂很,我火速辦了婚禮千劈,結(jié)果婚禮上羡蛾,老公的妹妹穿的比我還像新娘。我一直安慰自己痴怨,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布捐迫。 她就那樣靜靜地躺著施戴,像睡著了一般萌丈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上肪笋,一...
    開(kāi)封第一講書(shū)人閱讀 52,584評(píng)論 1 312
  • 那天涂乌,我揣著相機(jī)與錄音,去河邊找鬼湿右。 笑死罚勾,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的丈莺。 我是一名探鬼主播送丰,決...
    沈念sama閱讀 41,085評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼器躏,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了遏佣?” 一聲冷哼從身側(cè)響起揽浙,我...
    開(kāi)封第一講書(shū)人閱讀 40,023評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎膛虫,沒(méi)想到半個(gè)月后令杈,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,555評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評(píng)論 3 342
  • 正文 我和宋清朗相戀三年异雁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了纲刀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片担平。...
    茶點(diǎn)故事閱讀 40,769評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖面褐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情展哭,我是刑警寧澤,帶...
    沈念sama閱讀 36,439評(píng)論 5 351
  • 正文 年R本政府宣布您市,位于F島的核電站茵休,受9級(jí)特大地震影響手蝎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜柑船,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評(píng)論 3 335
  • 文/蒙蒙 一鞍时、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧及塘,春花似錦、人聲如沸笙僚。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,601評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至汪榔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間雌团,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,702評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工猛蔽, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留雨涛,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,191評(píng)論 3 378
  • 正文 我出身青樓凉泄,卻偏偏與公主長(zhǎng)得像后众,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蒂誉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容