欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

關(guān)于postgresql中的信息

PostgreSQL 中 sequence 的用法

sequence 是 pg 自帶的高效的自增id工具(也叫序列)。sequence 使用了輕量級鎖的方式來做到高效自增id的,所以會比 UPDATE 行鎖快。sequence 的返回數(shù)據(jù)類型默認是64位的整數(shù),pg 10 可以自定 smallint, integer 或者是 bigint。

成都創(chuàng)新互聯(lián)公司專注于成都網(wǎng)站設(shè)計、成都網(wǎng)站制作、網(wǎng)頁設(shè)計、網(wǎng)站制作、網(wǎng)站開發(fā)。公司秉持“客戶至上,用心服務(wù)”的宗旨,從客戶的利益和觀點出發(fā),讓客戶在網(wǎng)絡(luò)營銷中找到自己的駐足之地。尊重和關(guān)懷每一位客戶,用嚴謹?shù)膽B(tài)度對待客戶,用專業(yè)的服務(wù)創(chuàng)造價值,成為客戶值得信賴的朋友,為客戶解除后顧之憂。

sequence 是可以保證自增數(shù)據(jù)不重復(fù)的,也就是說每次自增后都會持久化保存,那么為了繼續(xù)提高性能,可以加上 CACHE 參數(shù)(默認為1),每個進程(連接)可以緩存一個子序列在當前進程內(nèi)存里面,當子序列用完了才會去原序列取新的子序列。

這個用個例子簡單說一下,創(chuàng)建 sequence temp_seq3 時用了 CACHE 10,A session 可以獲取到的值是 1...10,B session 可以獲取到的值是 11...20,那么獲取順序可能是 (A, A, B, A),返回值是 (1, 2, 11, 3),這個不是嚴格自增的序列,但可以保證回次返回都是唯一的,用了 CYCLE 參數(shù)的除外。

根據(jù)文檔和源碼( link 第80行),緩存在內(nèi)存里面的最大值(cached)是每個進程都不一樣的,所以如果要求嚴格自增的服務(wù)不能用 CACHE。

這里寫三種用 pg 做自增id的方式

測試命令,在 MacOS 上用 docker 開一個 pg 在里面運行一下 pgbench 腳本,其中 sql.sql 的內(nèi)容替換成對應(yīng)的壓測腳本。

TPS: 986

TPS: 7332

TPS: 7451

看看微信的分布式id生成器,原理都差不多,"實際應(yīng)用中每次提升的步長為10000" = "CACHE 10000"。 link

以上優(yōu)化已經(jīng)是用在友好速搭電商系統(tǒng)的訂單號和優(yōu)惠券號生成服務(wù)中,為商家提供更快更可靠的服務(wù)。

PostgreSQL中的join

從join的基本語法如下:

由此可以知道join的類型有以下幾種類型:

假設(shè)有以下兩張表

Table A:

Table B:

要說連接,首先要知道一個概念——笛卡爾積。

在PostgreSQL中笛卡爾積就是 cross join ,這是上面join類型中沒有提到的。

結(jié)果如下:

簡單來說,笛卡爾積就是把兩張表所有的行拼起來。3行的表與3行的表連接,連接表就是9行。

內(nèi)連接的 inner 是可以省略不寫的。內(nèi)連接會把滿足連接條件的t_a和t_b的行連接起來,作為連接表的一行。

結(jié)果如下:

只有滿足條件:id相等的列才會出現(xiàn)在連接表里。

首先會執(zhí)行內(nèi)連接,然后把左表的行都放進連接表,對于沒有滿足條件的右表的行,用空值代替

結(jié)果如下:

首先會執(zhí)行內(nèi)連接,然后把右表的行都放進連接表,對于沒有滿足條件的左表的行,用空值代替

結(jié)果如下:

首先會執(zhí)行內(nèi)連接,然后把左表和右表的行都放進連接表,對于沒有滿足條件的右表的行,用空值代替;對于沒有滿足條件的左表的行,用空值代替。

結(jié)果如下:

on 后面只要跟上返回布爾值的條件表達式即可,沒有強制要求一定要使用表中的列,類似于where條件。

using函數(shù)需要傳入左表和右表都存在的列名。以上面的例子來說,

using(id)

等價于

on t_a.id = t_b.id

可以傳入多個列名,就相當于用and連接多個條件。需要注意的點是:

結(jié)果如下:

將natural join放在連接條件里而不是連接類型里面,主要是因為natural join是隱含的使用了using,并且參數(shù)是兩張表中所有同名的列。

結(jié)果如下:

PostgreSQL中使用UUID

UUID(Universal Unique Identifier)或者 GUID(Globally Unique Identifier)是一個 128 比特的數(shù)字,可以用于唯一標識每個網(wǎng)絡(luò)對象或資源。由于它的生成機制,一個 UUID 可以保證幾乎不會與其他 UUID 重復(fù),因此常常用于生成數(shù)據(jù)庫中的主鍵值。

1.pgcrypto 模塊提供的 uuid

PostgreSQL 提供了一個用于加/解密的擴展模塊 pgcrypto,其中的 gen_random_uuid() 函數(shù)可以用于返回一個 version 4 的隨機 UUID。

2.uuid-ossp 模塊提供的 uuid

uuid-ossp模塊提供函數(shù)使用幾種標準算法之一產(chǎn)生通用唯一標識符(UUID)。還提供產(chǎn)生某些特殊 UUID 常量的函數(shù)。

1.將當前目錄轉(zhuǎn)移到 PostgreSQL 源代碼目錄下的 contrib;如:

2.執(zhí)行如下命令來安裝擴展模塊

如果要安裝 uuid-ossp 模塊,需要在執(zhí)行安裝擴展模塊之前,執(zhí)行 configure 并添加 --with-uuid=xxx,xxx取值為:

然后再執(zhí)行安裝擴展模塊的命令。

3.檢查是否安裝,在 PostgreSQL 的安裝目錄下的 /share/extension 目錄下,查看是否有模塊相關(guān)的文件。如:

注: gen_random_uuid() 從 PostgreSQL 13 開始成為了一個內(nèi)置函數(shù)

如果您所使用的PostgreSQL版本在13以上,則不需要執(zhí)行如下語句:

生成uuid:

如果想要生成沒有中劃線(-)的 UUID 字符串,可以使用 REPLACE 函數(shù):

查看包含的函數(shù):

執(zhí)行如下命令生成 uuid:

如何在Postgresql中創(chuàng)建序列數(shù)并應(yīng)用在數(shù)據(jù)表

序列數(shù)可以增加postgresql數(shù)據(jù)表的檢索速度,同時降低數(shù)據(jù)查詢時的資源消耗。那么如何在postgresql中創(chuàng)建序列數(shù)并且應(yīng)用呢?下面我給大家分享一下。

工具/材料

pgAdmin4

創(chuàng)建序列數(shù)

首先打開pgAdmin4,展開postgresql數(shù)據(jù)庫,找到模式下面的public選項,如下圖所示

接下來在public下面右鍵單擊序列,然后點擊Create下面的sequence選項,如下圖所示

在彈出的創(chuàng)建Sequence界面中首先給序列數(shù)起一個名字,如下圖所示,注意都用英文

然后切換到Definition頁卡,定義一下序列的增加量,如下圖所示,其中maximum根據(jù)自己的需要進行設(shè)置

最后回到數(shù)據(jù)庫主界面,你會看到序列下面多出了一個項,這就是我們創(chuàng)建的序列數(shù)了,如下圖所示

在數(shù)據(jù)表中應(yīng)用序列數(shù)

首先選中一個數(shù)據(jù)表,點擊右側(cè)的編輯按鈕,如下圖所示

在彈出的編輯界面中切換到Columns頁卡,點擊ID簽名的編輯按鈕,如下圖所示

最后在字段的編輯界面中切換到Variables選項卡,然后在Value列中通過nextval函數(shù)帶入剛才定義的序列數(shù)即可,如下圖所示

文章名稱:關(guān)于postgresql中的信息
瀏覽路徑:http://www.chinadenli.net/article34/dsdjjse.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google微信小程序虛擬主機網(wǎng)站改版域名注冊移動網(wǎng)站建設(shè)

廣告

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

手機網(wǎng)站建設(shè)