好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > postgresql 修改字段長度的操作

postgresql 修改字段長度的操作

熱門標簽:美容工作室地圖標注 打電話智能電銷機器人授權 海豐有多少商家沒有地圖標注 辦公外呼電話系統 漯河外呼電話系統 合肥公司外呼系統運營商 重慶自動外呼系統定制 地圖標注和圖片名稱的區別 外呼調研系統

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

可以使用如下方式進行

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

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

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

背景

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

測試驗證

做了個小測試,如下

建表并插入1000w數據

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類型互轉

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 

定義變更后的數據

定義變更后,數據位置未變,即沒有產生新的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擴容以外的定義變更,每個tuple產生一條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 

結論

varchar擴容,varchar轉text只需修改元數據,毫秒完成。

其它轉換需要的時間和數據量有關,1000w數據10~40秒,但是不改變數據文件,只是做檢查。

縮容時如果定義長度不夠容納現有數據報錯

不建議使用char類型,除了埋坑幾乎沒什么用,這一條不僅適用與PG,所有關系數據庫應該都適用。

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

您可能感興趣的文章:
  • postgresql varchar字段regexp_replace正則替換操作
  • 解決postgresql表中的字段名稱包含特殊符號的問題
  • PostgreSQL 實現查詢表字段信息SQL腳本
  • PostgreSQL 更新JSON,JSONB字段的操作
  • postgresql 實現獲取所有表名,字段名,字段類型,注釋
  • postgresql 補齊空值、自定義查詢字段并賦值操作

標簽:衡陽 來賓 烏海 株洲 蚌埠 晉城 錦州 珠海

巨人網絡通訊聲明:本文標題《postgresql 修改字段長度的操作》,本文關鍵詞  postgresql,修改,字段,長度,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《postgresql 修改字段長度的操作》相關的同類信息!
  • 本頁收集關于postgresql 修改字段長度的操作的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 他是疯批小说| 男女啪啪做爰高潮全过程图片漫画 | 免费高清无遮挡床震视频| 欧美性猛交黑人粗大| 国产厕所精品| 真实精品酒店偷拍拍在线| 国产午夜爽爽爽视频免费影院 | 国产精品无套抽出白浆来免费软件| 免费观看一级一片| 清超市欲目录大团结| 99精品国产成人一区二区在线| 欧美精品福利在线视频| 日韩午夜电影| 国产毛片在线看国产| 另类异族videosex| 强制侵犯系列av| 国产suv精品一区二区62| 最新合集|新片快递|bt伙伴| 美女露胸100| 日韩一级不卡| 18hdxxxx动漫3d| 红杏在线观看| 色婷婷久久综合中文久久一本| 我们都是坏孩子高清在线播放| 国产成人AV无码一二三区| 国产精品久久久久影院色老大| 国产精品一级午夜免费视频| 肌肉特警们的yd生活| 农村妇女野战bbxxx| 国产一级插插插| 国产 日韩 欧美 精品 丝袜| 一级a毛片高清视频| 午夜看黄网站免费| 国产一级毛片电影| 女忍者被调教得奶水泛滥小说| 国产精品久久久久激情影院| 国产沙发午睡系列对白| 欧美艳星的超级巨无大乳| 韩国伦理电影网站现在在线观看 | 中文字幕无码一级av| 性做久久久久久久久老女人|