最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

postgresql 修改字段長度的操作

 更新時間:2021年01月05日 14:32:10   作者:跨時代135  
這篇文章主要介紹了postgresql 修改字段長度的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

使用數(shù)據(jù)庫postgresql的時候,有時會遇到字段長度擴(kuò)展的情況,由于之前已經(jīng)有數(shù)據(jù)了,所以只能修改字段長度,不能通過刪除再增加的方式。

可以使用如下方式進(jìn)行

ALTER TABLE your_table_name alter COLUMN your_column_name type character varying(3000);

通過上面的一句話就可以把你的表中相應(yīng)的字段的長度修改為3000.

補充:PostgreSQL字符類型長度變更的性能

背景

業(yè)務(wù)有時會遇到表中的字符型字段的長度不夠用的問題,需要修改表定義。但是表里的數(shù)據(jù)已經(jīng)很多了,修改字段長度會不會造成應(yīng)用堵塞呢?

測試驗證

做了個小測試,如下

建表并插入1000w數(shù)據(jù)

postgres=# create table tbx1(id int,c1 char(10),c2 varchar(10));
CREATE TABLE
postgres=# insert into tbx1 select id ,'aaaaa','aaaaa' from generate_series(1,10000000) id;
INSERT 0 10000000 

變更varchar類型長度

postgres=# alter table tbx1 alter COLUMN c2 type varchar(100);
ALTER TABLE
Time: 1.873 ms
postgres=# alter table tbx1 alter COLUMN c2 type varchar(99);
ALTER TABLE
Time: 12815.678 ms
postgres=# alter table tbx1 alter COLUMN c2 type varchar(4);
ERROR: value too long for type character varying(4)
Time: 5.328 ms 

變更char類型長度

postgres=# alter table tbx1 alter COLUMN c1 type char(100);
ALTER TABLE
Time: 35429.282 ms
postgres=# alter table tbx1 alter COLUMN c1 type char(6);
ALTER TABLE
Time: 20004.198 ms
postgres=# alter table tbx1 alter COLUMN c1 type char(4);
ERROR: value too long for type character(4)
Time: 4.671 ms 

變更char類型,varchar和text類型互轉(zhuǎn)

alter table tbx1 alter COLUMN c1 type varchar(6);
ALTER TABLE
Time: 18880.369 ms
postgres=# alter table tbx1 alter COLUMN c1 type text;
ALTER TABLE
Time: 12.691 ms
postgres=# alter table tbx1 alter COLUMN c1 type varchar(20);
ALTER TABLE
Time: 32846.016 ms
postgres=# alter table tbx1 alter COLUMN c1 type char(20);
ALTER TABLE
Time: 39796.784 ms
postgres=# alter table tbx1 alter COLUMN c1 type text;
ALTER TABLE
Time: 32091.025 ms
postgres=# alter table tbx1 alter COLUMN c1 type char(20);
ALTER TABLE
Time: 26031.344 ms 

定義變更后的數(shù)據(jù)

定義變更后,數(shù)據(jù)位置未變,即沒有產(chǎn)生新的tuple

postgres=# select ctid,id from tbx1 limit 5;
 ctid | id 
-------+----
 (0,1) | 1
 (0,2) | 2
 (0,3) | 3
 (0,4) | 4
 (0,5) | 5
(5 rows) 

除varchar擴(kuò)容以外的定義變更,每個tuple產(chǎn)生一條WAL記錄

$ pg_xlogdump -f -s 3/BE002088 -n 5
rmgr: Heap    len (rec/tot):   3/  181, tx:    1733, lsn: 3/BE002088, prev 3/BE001FB8, desc: INSERT off 38, blkref #0: rel 1663/13269/16823 blk 58358
rmgr: Heap    len (rec/tot):   3/  181, tx:    1733, lsn: 3/BE002140, prev 3/BE002088, desc: INSERT off 39, blkref #0: rel 1663/13269/16823 blk 58358
rmgr: Heap    len (rec/tot):   3/  181, tx:    1733, lsn: 3/BE0021F8, prev 3/BE002140, desc: INSERT off 40, blkref #0: rel 1663/13269/16823 blk 58358
rmgr: Heap    len (rec/tot):   3/  181, tx:    1733, lsn: 3/BE0022B0, prev 3/BE0021F8, desc: INSERT off 41, blkref #0: rel 1663/13269/16823 blk 58358
rmgr: Heap    len (rec/tot):   3/  181, tx:    1733, lsn: 3/BE002368, prev 3/BE0022B0, desc: INSERT off 42, blkref #0: rel 1663/13269/16823 blk 58358 

結(jié)論

varchar擴(kuò)容,varchar轉(zhuǎn)text只需修改元數(shù)據(jù),毫秒完成。

其它轉(zhuǎn)換需要的時間和數(shù)據(jù)量有關(guān),1000w數(shù)據(jù)10~40秒,但是不改變數(shù)據(jù)文件,只是做檢查。

縮容時如果定義長度不夠容納現(xiàn)有數(shù)據(jù)報錯

不建議使用char類型,除了埋坑幾乎沒什么用,這一條不僅適用與PG,所有關(guān)系數(shù)據(jù)庫應(yīng)該都適用。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • Postgresql ALTER語句常用操作小結(jié)

    Postgresql ALTER語句常用操作小結(jié)

    這篇文章主要介紹了Postgresql ALTER語句常用操作小結(jié),本文講解了增加一列、刪除一列、更改列的數(shù)據(jù)類型、表的重命名、更改列的名字、字段的not null設(shè)置等常用操作的代碼示例,需要的朋友可以參考下
    2015-06-06
  • PostgreSQL分區(qū)表(partitioning)應(yīng)用實例詳解

    PostgreSQL分區(qū)表(partitioning)應(yīng)用實例詳解

    這篇文章主要為大家詳細(xì)介紹了PostgreSQL分區(qū)表(partitioning)應(yīng)用實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Windows?環(huán)境搭建?PostgreSQL?邏輯復(fù)制高可用架構(gòu)數(shù)據(jù)庫服務(wù)

    Windows?環(huán)境搭建?PostgreSQL?邏輯復(fù)制高可用架構(gòu)數(shù)據(jù)庫服務(wù)

    本文主要介紹Windows下搭建PostgreSQL的主從邏輯復(fù)制,關(guān)于PostgreSQl的相關(guān)運維文章,網(wǎng)絡(luò)上大多都是?Linux?環(huán)境下的操作,鮮有在?Windows?環(huán)境下配置的教程,所以本文采用?Windows?環(huán)境作為演示系統(tǒng)來進(jìn)行?PostgreSQL?高可用數(shù)據(jù)庫服務(wù)的搭建,感興趣的朋友一起看看吧
    2023-05-05
  • PostgreSQL 正則表達(dá)式替換-使用變量方式

    PostgreSQL 正則表達(dá)式替換-使用變量方式

    這篇文章主要介紹了PostgreSQL 正則表達(dá)式替換-使用變量方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • PostgreSQL HOT與PHOT有哪些區(qū)別

    PostgreSQL HOT與PHOT有哪些區(qū)別

    這篇文章主要介紹了PostgreSQL8.3版本開始就引入的HOT機(jī)制與PHOT使用區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-09-09
  • PostgreSQL數(shù)據(jù)庫性能調(diào)優(yōu)的注意點以及pg數(shù)據(jù)庫性能優(yōu)化方式

    PostgreSQL數(shù)據(jù)庫性能調(diào)優(yōu)的注意點以及pg數(shù)據(jù)庫性能優(yōu)化方式

    這篇文章主要介紹了PostgreSQL數(shù)據(jù)庫性能調(diào)優(yōu)的注意點以及pg數(shù)據(jù)庫性能優(yōu)化方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Windows上PostgreSQL安裝配置教程

    Windows上PostgreSQL安裝配置教程

    這篇文章主要為大家詳細(xì)介紹了Windows上PostgreSQL安裝配置教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • PostgreSQL慢SQL的定位排查方法

    PostgreSQL慢SQL的定位排查方法

    所謂慢SQL 是指在數(shù)據(jù)庫中執(zhí)行時間超過指定閾值的語句,慢查詢太多,對于業(yè)務(wù)而言,是有很大風(fēng)險的,可能隨時都會因為某種原因而被觸發(fā),本篇文章將介紹 PostgreSQL 慢 SQL 如何定位排查,需要的朋友可以參考下
    2024-07-07
  • postgresql行轉(zhuǎn)列與列轉(zhuǎn)行圖文教程

    postgresql行轉(zhuǎn)列與列轉(zhuǎn)行圖文教程

    PostgreSQL是一種開源的關(guān)系型數(shù)據(jù)庫,它提供了多種管理工具來操作數(shù)據(jù)庫,下面這篇文章主要給大家介紹了關(guān)于postgresql行轉(zhuǎn)列與列轉(zhuǎn)行的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • postgresql 中的時間處理小技巧(推薦)

    postgresql 中的時間處理小技巧(推薦)

    這篇文章主要介紹了postgresql 中的時間處理小技巧(推薦),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03

最新評論

尼勒克县| 东兴市| 南召县| 枣阳市| 岢岚县| 阳高县| 武义县| 永登县| 安平县| 中超| 夏邑县| 庆云县| 南丹县| 叙永县| 密云县| 会理县| 广河县| 开封市| 罗江县| 长岛县| 金乡县| 陆川县| 成安县| 玛曲县| 安庆市| 旅游| 宾川县| 赤峰市| 当阳市| 分宜县| 台东市| 化州市| 嫩江县| 高台县| 德格县| 新泰市| 沂源县| 东明县| 深州市| 和政县| 宽城|