内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

postgresql字節(jié)的簡單介紹

PostgreSQL數(shù)據(jù)庫中char,varchar和text的區(qū)別

關(guān)于char,varchar與text平時(shí)沒有太在意,一般來說,可能現(xiàn)在大家都是用varchar。但是當(dāng)要存儲的內(nèi)容比較大時(shí),究竟是選擇varchar還是text呢?不知道。。。。。。 于是去查閱了一些資料,順便將這三種類型做個(gè)比較: (1)char: char不用多說了,它是定長格式的,但是長度范圍是0~255. 當(dāng)你想要儲存一個(gè)長度不足255的字符時(shí),mysql會用空格來填充剩下的字符。因此在讀取數(shù)據(jù)時(shí),char類型的數(shù)據(jù)要進(jìn)行處理,把后面的空格去除。 (2)varchar: 關(guān)于varchar,有的說最大長度是255,也有的說是65535,查閱很多資料后發(fā)現(xiàn)是這樣的:varchar類型在5.0.3以下的版本中的最大長度限制為255,而在5.0.3及以上的版本中,varchar數(shù)據(jù)類型的長度支持到了65535,也就是說可以存放65532個(gè)字節(jié)(注意是字節(jié)而不是字符?。。。┑臄?shù)據(jù)(起始位和結(jié)束位占去了3個(gè)字節(jié)),也就是說,在5.0.3以下版本中需要使用固定的TEXT或BLOB格式存放的數(shù)據(jù)可以在高版本中使用可變長的varchar來存放,這樣就能有效的減少數(shù)據(jù)庫文件的大小。 (3)text:與char和varchar不同的是,text不可以有默認(rèn)值,其最大長度是2的16次方-1 總結(jié)起來,有幾點(diǎn): 經(jīng)常變化的字段用varchar 知道固定長度的用char 盡量用varchar 超過255字符的只能用varchar或者text 能用varchar的地方不用text

成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的達(dá)孜網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

PostgreSQL學(xué)習(xí)系列—EXPLAIN ANALYZE查詢計(jì)劃解讀

PostgreSQL命令 EXPLAIN ANALYZE 是日常工作中了解和優(yōu)化SQL查詢過程所用到的最強(qiáng)大工具,后接如 SELECT ... , UPDATE ... 或者 DELETE ... 等SQL語句,命令執(zhí)行后并不返回?cái)?shù)據(jù),而是輸出查詢計(jì)劃,詳細(xì)說明規(guī)劃器通過何種方式來執(zhí)行給定的SQL語句。

下面是從 Postgres Using EXPLAIN 提取的查詢:

它生成的查詢計(jì)劃:

Postgres構(gòu)建了一個(gè)規(guī)劃節(jié)點(diǎn)的樹結(jié)構(gòu),以表示所采取的不同操作,其中root根和每個(gè) - 指向其中一個(gè)操作。在某些情況下, EXPLAIN ANALYZE 會提供除執(zhí)行時(shí)間和行數(shù)之外的額外執(zhí)行統(tǒng)計(jì)信息,例如上面例子中的 Sort 及 Hash 。除第一個(gè)沒有 - 的行之外的任何行都是諸如此類的信息,因此查詢的結(jié)構(gòu)是:

每個(gè)樹分支代表子動(dòng)作,從里到外以確定哪個(gè)是“第一個(gè)”發(fā)生(盡管同一級別的節(jié)點(diǎn)順序可能不同)。

在 tenk_unique1 索引上執(zhí)行的第一個(gè)操作是 Bitmap Index Scan :

這對應(yīng)于SQL WHERE t1.unique1 100 。Postgres查找與條件 unique1 100 匹配的行位置。此處不會返回行數(shù)據(jù)本身。成本估算 (cost=0.00..5.04 rows=101 width=0) 意味著Postgres預(yù)期將“花費(fèi)” 任意計(jì)算單位的 5.04 來找到這些行。0.00是此節(jié)點(diǎn)開始工作的成本(在這種情況下,即為查詢的啟動(dòng)時(shí)間)。 rows 是此索引掃描將返回的預(yù)估行數(shù), width 是這些返回行的預(yù)估大小(以字節(jié)為單位)(0是因?yàn)檫@里只關(guān)心位置,而不是行數(shù)據(jù)的內(nèi)容)。

因?yàn)槭褂昧?ANALYZE 選項(xiàng)運(yùn)行 EXPLAIN ,所以查詢被實(shí)際執(zhí)行并捕獲了計(jì)時(shí)信息。 (actual time=0.049..0.049 rows=100 loops=1) 表示索引掃描執(zhí)行了1次( loops 值),結(jié)果返回了100行,實(shí)際時(shí)間是0 ..如果節(jié)點(diǎn)執(zhí)行了多次,實(shí)際時(shí)間是每次迭代的平均值,可以將該值乘以循環(huán)次數(shù)以獲取實(shí)際時(shí)間?;诔杀镜淖钚?最大時(shí)間的概念,范圍值也可能會有所不同。通過這些值,我們可以為該查詢生成一個(gè)成本比率,每個(gè)成本單位為0.049ms / 5.04單位≈0.01ms/單位。

索引掃描的結(jié)果將傳遞給 Bitmap Heap Scan 操作。在此節(jié)點(diǎn)中,Postgres將獲取別名為t1的tenk1表中行的位置,根據(jù) unique1 100 條件篩選并獲取行。

當(dāng)乘以之前計(jì)算的0.01值時(shí),我們可以得到成本預(yù)期的大概時(shí)間(229.20 - 5.07)*0.01≈2.24ms,同時(shí)每行實(shí)際時(shí)間為除以4后的結(jié)果:0.526ms。這可能是因?yàn)槌杀竟浪闶侨〉纳舷薅皇侨∷行枳x取的行,也或者因?yàn)镽echeck條件總是生效。

和表順序讀取行(a Seq Scan )相比, Bitmap Index Scan 和 Bitmap Heap Scan 關(guān)聯(lián)操作成本要昂貴得多,但是因?yàn)樵谶@種情況下只需要訪問相對較少的行,所以關(guān)聯(lián)操作最終會變得更快。通過在獲取行之前將行按照物理順序排序來進(jìn)一步加速,這會將單獨(dú)獲取的成本降到最低。節(jié)點(diǎn)名稱中的“Bitmap”完成了排序操作。

表掃描的結(jié)果(tenk1表中滿足 unique1 100 條件的那些行)將在讀取時(shí)被插入到內(nèi)存的哈希表中。正如我們從成本中看到的那樣,這根本不需要時(shí)間。

哈希節(jié)點(diǎn)包括散列桶(hash buckets)和批次數(shù)(batches)相關(guān)的信息,以及內(nèi)存使用峰值情況。如果批次 1,則還會包括未顯示的磁盤使用信息。內(nèi)存占用在100行* 244字節(jié)= 24.4 kB時(shí)是有意義的,它非常接近28kB,我們假定這是哈希鍵本身所占用的內(nèi)存。

接下來,Postgres從別名為t2的tenk2表讀取所有的10000行,并根據(jù)tenk1表行的Hash檢查它們。散列連接意味著將一個(gè)表的行輸入到內(nèi)存中的散列(先前的操作中已構(gòu)建),之后掃描另一個(gè)表的行,并根據(jù)散列表探測其值以進(jìn)行匹配。在第二行可以看到“匹配”的條件, Hash Cond: (t2.unique2 = t1.unique2) 。請注意,因?yàn)椴樵兪菑膖enk1和tenk2中選擇所有值,所以在散列連接期間每行的寬度加倍。

現(xiàn)在已經(jīng)收集了滿足條件的所有行,可以對結(jié)果集進(jìn)行排序 Sort Key: t1.fivethous 。

Sort節(jié)點(diǎn)包含排序算法 quicksort 相關(guān)的信息 ,排序是在內(nèi)存中還是在磁盤上完成(這將極大地影響速度),以及排序所需的內(nèi)存/磁盤空間量。

熟悉如何解讀查詢計(jì)劃會非常有助于優(yōu)化查詢。例如,Seq Scan節(jié)點(diǎn)通常表示添加索引的必要性,讀取速度可能要快得多。

翻譯并編輯,原文出處:

postgreSQL數(shù)據(jù)類型問題

一個(gè)bigint它占用了八個(gè)字節(jié)的存儲空間,可以精確的表示從-2^63到2^63-1(即從-9,223,372,036,854,775,808到 9,223,372,036,854,775,807)之間的整數(shù)。所以恩,不是說一個(gè)數(shù)字,而是從-2^63到2^63-1都可以.

varchar 是按字節(jié)來存儲,如 varchar(10),會占用11個(gè)字節(jié),其中10個(gè)是用來定義字符,還有一個(gè)字節(jié)是用來存儲列的長度

如何向postgreSQL中添加bytea類型的大對象數(shù)據(jù)

PostgreSQL二進(jìn)制數(shù)據(jù)類型bytea保存2G數(shù)據(jù)ADO、ODBC等接口通帶參數(shù)化插入SQL語句傳二進(jìn)制

某些接口、SQL語句進(jìn)行參數(shù)綁定或者某些語言沒二進(jìn)制類型或者接口兼容等原傳二進(jìn)制數(shù)據(jù)

碰種情況必須客戶端二進(jìn)制轉(zhuǎn)化定規(guī)則字符序列插入語句顯示轉(zhuǎn)換cast('字符序列' as bytea).

二進(jìn)制轉(zhuǎn)化字符序列規(guī)則:

析每字節(jié)其ASCII值031127255或39、92請字節(jié)轉(zhuǎn)化3位八進(jìn)制字符串前面加2反斜杠chr(39)表示//047. 其ascii值顯示字符變?nèi)哭D(zhuǎn)化八進(jìn)制整字符串太浪費(fèi)空間

二進(jìn)制序列 chr(0)+'a'+'b'+chr(233)+chr(25)+'c'轉(zhuǎn)化字符序列:

//000ab//351//031c

傳候再顯示轉(zhuǎn)換 insert into table1 (aa) values (cast('//000ab//351//031c' as bytea))

二進(jìn)制數(shù)據(jù)太傳,用||連接符連接起,:

insert into table1 (id,aa) values (1,cast('序列1' as bytea))

update table1 set aa=aa||cast('序列2' as bytea) where id=1

標(biāo)題名稱:postgresql字節(jié)的簡單介紹
網(wǎng)站地址:http://m.rwnh.cn/article34/dsdhgse.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、品牌網(wǎng)站制作、服務(wù)器托管、定制開發(fā)、App開發(fā)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計(jì)
丁青县| 仲巴县| 翁源县| 黑水县| 东方市| 准格尔旗| 岢岚县| 大埔县| 昭苏县| 郓城县| 重庆市| 江川县| 平利县| 资兴市| 汤阴县| 赞皇县| 伊春市| 精河县| 白山市| 汝南县| 稻城县| 温宿县| 图木舒克市| 赤水市| 徐汇区| 广灵县| 山阴县| 岢岚县| 偏关县| 黄冈市| 遂平县| 阳东县| 朔州市| 万安县| 防城港市| 安国市| 济南市| 彝良县| 临邑县| 元江| 林西县|