91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么理解PostgreSQL創建數據表時的參數fillfactor

發布時間:2021-11-08 16:30:59 來源:億速云 閱讀:374 作者:iii 欄目:關系型數據庫

這篇文章主要講解了“怎么理解PostgreSQL創建數據表時的參數fillfactor”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么理解PostgreSQL創建數據表時的參數fillfactor”吧!

下面創建不同fillfactor的數據表,執行update操作

[local]:5432 pg12@testdb=# create table t_fillfactor_100(id int,c1 varchar(30),c2 varchar(30),c3 varchar(30)) with (fillfactor=100);
CREATE TABLE
Time: 2.462 ms
[local]:5432 pg12@testdb=# create table t_fillfactor_70(id int,c1 varchar(30),c2 varchar(30),c3 varchar(30)) with (fillfactor=70);
CREATE TABLE
Time: 3.437 ms
[local]:5432 pg12@testdb=# create table t_fillfactor_50(id int,c1 varchar(30),c2 varchar(30),c3 varchar(30)) with (fillfactor=50);
CREATE TABLE
Time: 28.553 ms
[local]:5432 pg12@testdb=# insert into t_fillfactor_100(id,c1,c2,c3) select x,'c1'||x,'c2'||x,'c3'||x from generate_series(1,1000000) as x;
INSERT 0 1000000
Time: 3583.216 ms (00:03.583)
[local]:5432 pg12@testdb=# insert into t_fillfactor_70(id,c1,c2,c3) select x,'c1'||x,'c2'||x,'c3'||x from generate_series(1,1000000) as x;
INSERT 0 1000000
Time: 6506.113 ms (00:06.506)
[local]:5432 pg12@testdb=# insert into t_fillfactor_50(id,c1,c2,c3) select x,'c1'||x,'c2'||x,'c3'||x from generate_series(1,1000000) as x;
INSERT 0 1000000
Time: 3113.901 ms (00:03.114)
[local]:5432 pg12@testdb=# update t_fillfactor_100 set c1=lpad('c1',30,'c1'),c2=lpad('c2',30,'c2'),c3=lpad('c3',30,'c3');
UPDATE 1000000
Time: 10641.794 ms (00:10.642)
[local]:5432 pg12@testdb=# update t_fillfactor_70 set c1=lpad('c1',30,'c1'),c2=lpad('c2',30,'c2'),c3=lpad('c3',30,'c3');
UPDATE 1000000
Time: 8563.046 ms (00:08.563)
[local]:5432 pg12@testdb=# update t_fillfactor_50 set c1=lpad('c1',30,'c1'),c2=lpad('c2',30,'c2'),c3=lpad('c3',30,'c3');
UPDATE 1000000
Time: 4036.735 ms (00:04.037)

可以看到,在插入時,fillfactor較高的數據表耗時較短,而在update時(全量),fillfactor的則有較大的優勢.但,經過多次update后,耗時并不明顯,原因在于經過多次update,每個塊的空閑空間跟fillfactor=100的設定已相差無幾.

[local]:5432 pg12@testdb=# update t_fillfactor_100 set c1=lpad('c1',30,'c1'),c2=lpad('c2',30,'c2'),c3=lpad('c3',30,'c3');
UPDATE 1000000
Time: 4276.404 ms (00:04.276)
[local]:5432 pg12@testdb=# update t_fillfactor_70 set c1=lpad('c1',30,'c1'),c2=lpad('c2',30,'c2'),c3=lpad('c3',30,'c3');
UPDATE 1000000
Time: 3856.575 ms (00:03.857)
[local]:5432 pg12@testdb=# update t_fillfactor_50 set c1=lpad('c1',30,'c1'),c2=lpad('c2',30,'c2'),c3=lpad('c3',30,'c3');
UPDATE 1000000
Time: 4364.962 ms (00:04.365)
[local]:5432 pg12@testdb=#

重新創建表,使用pgbench進行測試

[local]:5432 pg12@testdb=# drop table if exists t_fillfactor_100;
t,c1 varchar(30),c2 varchar(30),c3 varchar(30)) with (fillfactor=70);
create table t_fillfactor_50(id int,c1 varchar(30),c2 varchar(30),c3 varchar(30)) with (fillfactor=50);
insert into t_fillfactor_100(id,c1,c2,c3) select x,'c1'||x,'c2'||x,'c3'||x from generate_series(1,1000000) as x;
insert into t_fillfactor_70(id,c1,c2,c3) select x,'c1'||x,'c2'||x,'c3'||x from generate_series(1,1000000) as x;
insert into t_fillfactor_50(id,c1,c2,c3) select x,'c1'||x,'c2'||x,'c3'||x from generate_series(1,1000000) as x;
DROP TABLE
Time: 191.706 ms
[local]:5432 pg12@testdb=# drop table if exists t_fillfactor_70;
DROP TABLE
Time: 35.313 ms
[local]:5432 pg12@testdb=# drop table if exists t_fillfactor_50;
DROP TABLE
Time: 30.078 ms
[local]:5432 pg12@testdb=# 
[local]:5432 pg12@testdb=# create table t_fillfactor_100(id int,c1 varchar(30),c2 varchar(30),c3 varchar(30)) with (fillfactor=100);
CREATE TABLE
Time: 40.443 ms
[local]:5432 pg12@testdb=# create table t_fillfactor_70(id int,c1 varchar(30),c2 varchar(30),c3 varchar(30)) with (fillfactor=70);
CREATE TABLE
Time: 1.334 ms
[local]:5432 pg12@testdb=# create table t_fillfactor_50(id int,c1 varchar(30),c2 varchar(30),c3 varchar(30)) with (fillfactor=50);
CREATE TABLE
Time: 1.024 ms
[local]:5432 pg12@testdb=# 
[local]:5432 pg12@testdb=# insert into t_fillfactor_100(id,c1,c2,c3) select x,'c1'||x,'c2'||x,'c3'||x from generate_series(1,1000000) as x;
INSERT 0 1000000
Time: 2623.943 ms (00:02.624)
[local]:5432 pg12@testdb=# insert into t_fillfactor_70(id,c1,c2,c3) select x,'c1'||x,'c2'||x,'c3'||x from generate_series(1,1000000) as x;
INSERT 0 1000000
Time: 2543.045 ms (00:02.543)
[local]:5432 pg12@testdb=# insert into t_fillfactor_50(id,c1,c2,c3) select x,'c1'||x,'c2'||x,'c3'||x from generate_series(1,1000000) as x;
INSERT 0 1000000
Time: 2662.223 ms (00:02.662)
[local]:5432 pg12@testdb=#

使用pgbench進行測試

[pg12@localhost script]$ cat update_100.sql 
\set id random(1,1000000)
begin;
update t_fillfactor_100 set c1=lpad('c1',30,'c1'),c2=lpad('c2',30,'c2'),c3=lpad('c3',30,'c3') where id= :id;
end;
[pg12@localhost script]$ cat update_70.sql 
\set id random(1,1000000)
begin;
update t_fillfactor_70 set c1=lpad('c1',30,'c1'),c2=lpad('c2',30,'c2'),c3=lpad('c3',30,'c3') where id= :id;
end;
[pg12@localhost script]$ cat update_50.sql 
\set id random(1,1000000)
begin;
update t_fillfactor_50 set c1=lpad('c1',30,'c1'),c2=lpad('c2',30,'c2'),c3=lpad('c3',30,'c3') where id= :id;
end;
[pg12@localhost script]$ pgbench -c 2 -C -f ~/script/update_100.sql -j 1 -n -T 60 -U pg12 testdb
transaction type: /home/pg12/script/update_100.sql
scaling factor: 1
query mode: simple
number of clients: 2
number of threads: 1
duration: 60 s
number of transactions actually processed: 691
latency average = 174.136 ms
tps = 11.485277 (including connections establishing)
tps = 11.625959 (excluding connections establishing)
[pg12@localhost script]$ pgbench -c 2 -C -f ~/script/update_70.sql -j 1 -n -T 60 -U pg12 testdb
transaction type: /home/pg12/script/update_70.sql
scaling factor: 1
query mode: simple
number of clients: 2
number of threads: 1
duration: 60 s
number of transactions actually processed: 652
latency average = 184.293 ms
tps = 10.852275 (including connections establishing)
tps = 10.981136 (excluding connections establishing)
[pg12@localhost script]$ pgbench -c 2 -C -f ~/script/update_50.sql -j 1 -n -T 60 -U pg12 testdb
transaction type: /home/pg12/script/update_50.sql
scaling factor: 1
query mode: simple
number of clients: 2
number of threads: 1
duration: 60 s
number of transactions actually processed: 627
latency average = 191.700 ms
tps = 10.432967 (including connections establishing)
tps = 10.551899 (excluding connections establishing)
[pg12@localhost script]$

使用pgbench使用隨機值進行測試,時長為60s,結果差別不大.

數據表大小的比較:

[local]:5432 pg12@testdb=# select pg_size_pretty(pg_relation_size('t_fillfactor_100'));
 pg_size_pretty 
----------------
 58 MB
(1 row)
Time: 2.034 ms
[local]:5432 pg12@testdb=# select pg_size_pretty(pg_relation_size('t_fillfactor_70'));
 pg_size_pretty 
----------------
 82 MB
(1 row)
Time: 1.469 ms
[local]:5432 pg12@testdb=# select pg_size_pretty(pg_relation_size('t_fillfactor_50'));
 pg_size_pretty 
----------------
 117 MB
(1 row)
Time: 2.531 ms
[local]:5432 pg12@testdb=#

分別是58MB vs 82MB vs 117MB ≈ 100 vs 70 vs 50

感謝各位的閱讀,以上就是“怎么理解PostgreSQL創建數據表時的參數fillfactor”的內容了,經過本文的學習后,相信大家對怎么理解PostgreSQL創建數據表時的參數fillfactor這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

洪雅县| 英超| 隆回县| 嘉义县| 古浪县| 开远市| 南昌市| 禹城市| 金昌市| 郴州市| 明水县| 泸溪县| 江达县| 宁阳县| 宽甸| 红安县| 开化县| 荔浦县| 五峰| 忻州市| 融水| 牟定县| 县级市| 新源县| 石阡县| 蓝山县| 永泰县| 凉城县| 武安市| 南江县| 潜江市| 廊坊市| 商洛市| 常宁市| 南涧| 三台县| 宁都县| 延庆县| 固始县| 中宁县| 宁强县|