ne 16. 2. 2020 v 16:15 odesílatel 曾文旌(义从) <wenjing.zwj@alibaba-inc.com> napsal:2020年2月15日 下午6:06,Pavel Stehule <pavel.stehule@gmail.com> 写道:postgres=# insert into foo select generate_series(1,10000);INSERT 0 10000postgres=# \dt+ foo List of relations┌────────┬──────┬───────┬───────┬─────────────┬────────┬─────────────┐│ Schema │ Name │ Type │ Owner │ Persistence │ Size │ Description │╞════════╪══════╪═══════╪═══════╪═════════════╪════════╪═════════════╡│ public │ foo │ table │ pavel │ session │ 384 kB │ │└────────┴──────┴───────┴───────┴─────────────┴────────┴─────────────┘(1 row)postgres=# truncate foo;TRUNCATE TABLEpostgres=# \dt+ foo List of relations┌────────┬──────┬───────┬───────┬─────────────┬───────┬─────────────┐│ Schema │ Name │ Type │ Owner │ Persistence │ Size │ Description │╞════════╪══════╪═══════╪═══════╪═════════════╪═══════╪═════════════╡│ public │ foo │ table │ pavel │ session │ 16 kB │ │└────────┴──────┴───────┴───────┴─────────────┴───────┴─────────────┘(1 row)I expect zero size after truncate.Thanks for review.I can explain, I don't think it's a bug.The current implementation of the truncated GTT retains two blocks of FSM pages.The same is true for truncating regular tables in subtransactions.This is an implementation that truncates the table without changing the relfilenode of the table.This is not extra important feature - now this is little bit a surprise, because I was not under transaction.Changing relfilenode, I think, is necessary, minimally for future VACUUM FULL support.Not allowing relfilenode changes is the current limit.I think can improve on it. But ,This is a bit complicated.so I'd like to know the necessity of this improvement.Could you give me more details?I don't think so GTT without support of VACUUM FULL can be accepted. Just due consistency. RegardsPavelRegardsPavel Stehule WenjingRegardsPavel Wenjing > > -- > Robert Haas > EnterpriseDB: http://www.enterprisedb.com > The Enterprise PostgreSQL Company
2020年2月15日 下午6:06,Pavel Stehule <pavel.stehule@gmail.com> 写道:postgres=# insert into foo select generate_series(1,10000);INSERT 0 10000postgres=# \dt+ foo List of relations┌────────┬──────┬───────┬───────┬─────────────┬────────┬─────────────┐│ Schema │ Name │ Type │ Owner │ Persistence │ Size │ Description │╞════════╪══════╪═══════╪═══════╪═════════════╪════════╪═════════════╡│ public │ foo │ table │ pavel │ session │ 384 kB │ │└────────┴──────┴───────┴───────┴─────────────┴────────┴─────────────┘(1 row)postgres=# truncate foo;TRUNCATE TABLEpostgres=# \dt+ foo List of relations┌────────┬──────┬───────┬───────┬─────────────┬───────┬─────────────┐│ Schema │ Name │ Type │ Owner │ Persistence │ Size │ Description │╞════════╪══════╪═══════╪═══════╪═════════════╪═══════╪═════════════╡│ public │ foo │ table │ pavel │ session │ 16 kB │ │└────────┴──────┴───────┴───────┴─────────────┴───────┴─────────────┘(1 row)I expect zero size after truncate.Thanks for review.I can explain, I don't think it's a bug.The current implementation of the truncated GTT retains two blocks of FSM pages.The same is true for truncating regular tables in subtransactions.This is an implementation that truncates the table without changing the relfilenode of the table.This is not extra important feature - now this is little bit a surprise, because I was not under transaction.Changing relfilenode, I think, is necessary, minimally for future VACUUM FULL support.Not allowing relfilenode changes is the current limit.I think can improve on it. But ,This is a bit complicated.so I'd like to know the necessity of this improvement.Could you give me more details?
2020年2月15日 下午6:06,Pavel Stehule <pavel.stehule@gmail.com> 写道:postgres=# insert into foo select generate_series(1,10000);INSERT 0 10000postgres=# \dt+ foo List of relations┌────────┬──────┬───────┬───────┬─────────────┬────────┬─────────────┐│ Schema │ Name │ Type │ Owner │ Persistence │ Size │ Description │╞════════╪══════╪═══════╪═══════╪═════════════╪════════╪═════════════╡│ public │ foo │ table │ pavel │ session │ 384 kB │ │└────────┴──────┴───────┴───────┴─────────────┴────────┴─────────────┘(1 row)postgres=# truncate foo;TRUNCATE TABLEpostgres=# \dt+ foo List of relations┌────────┬──────┬───────┬───────┬─────────────┬───────┬─────────────┐│ Schema │ Name │ Type │ Owner │ Persistence │ Size │ Description │╞════════╪══════╪═══════╪═══════╪═════════════╪═══════╪═════════════╡│ public │ foo │ table │ pavel │ session │ 16 kB │ │└────────┴──────┴───────┴───────┴─────────────┴───────┴─────────────┘(1 row)I expect zero size after truncate.Thanks for review.I can explain, I don't think it's a bug.The current implementation of the truncated GTT retains two blocks of FSM pages.The same is true for truncating regular tables in subtransactions.This is an implementation that truncates the table without changing the relfilenode of the table.This is not extra important feature - now this is little bit a surprise, because I was not under transaction.Changing relfilenode, I think, is necessary, minimally for future VACUUM FULL support.
postgres=# insert into foo select generate_series(1,10000);INSERT 0 10000postgres=# \dt+ foo List of relations┌────────┬──────┬───────┬───────┬─────────────┬────────┬─────────────┐│ Schema │ Name │ Type │ Owner │ Persistence │ Size │ Description │╞════════╪══════╪═══════╪═══════╪═════════════╪════════╪═════════════╡│ public │ foo │ table │ pavel │ session │ 384 kB │ │└────────┴──────┴───────┴───────┴─────────────┴────────┴─────────────┘(1 row)postgres=# truncate foo;TRUNCATE TABLEpostgres=# \dt+ foo List of relations┌────────┬──────┬───────┬───────┬─────────────┬───────┬─────────────┐│ Schema │ Name │ Type │ Owner │ Persistence │ Size │ Description │╞════════╪══════╪═══════╪═══════╪═════════════╪═══════╪═════════════╡│ public │ foo │ table │ pavel │ session │ 16 kB │ │└────────┴──────┴───────┴───────┴─────────────┴───────┴─────────────┘(1 row)I expect zero size after truncate.Thanks for review.I can explain, I don't think it's a bug.The current implementation of the truncated GTT retains two blocks of FSM pages.The same is true for truncating regular tables in subtransactions.This is an implementation that truncates the table without changing the relfilenode of the table.
postgres=# insert into foo select generate_series(1,10000);INSERT 0 10000postgres=# \dt+ foo List of relations┌────────┬──────┬───────┬───────┬─────────────┬────────┬─────────────┐│ Schema │ Name │ Type │ Owner │ Persistence │ Size │ Description │╞════════╪══════╪═══════╪═══════╪═════════════╪════════╪═════════════╡│ public │ foo │ table │ pavel │ session │ 384 kB │ │└────────┴──────┴───────┴───────┴─────────────┴────────┴─────────────┘(1 row)postgres=# truncate foo;TRUNCATE TABLEpostgres=# \dt+ foo List of relations┌────────┬──────┬───────┬───────┬─────────────┬───────┬─────────────┐│ Schema │ Name │ Type │ Owner │ Persistence │ Size │ Description │╞════════╪══════╪═══════╪═══════╪═════════════╪═══════╪═════════════╡│ public │ foo │ table │ pavel │ session │ 16 kB │ │└────────┴──────┴───────┴───────┴─────────────┴───────┴─────────────┘(1 row)I expect zero size after truncate.
RegardsPavel Stehule WenjingRegardsPavel Wenjing > > -- > Robert Haas > EnterpriseDB: http://www.enterprisedb.com > The Enterprise PostgreSQL Company
WenjingRegardsPavel Wenjing > > -- > Robert Haas > EnterpriseDB: http://www.enterprisedb.com > The Enterprise PostgreSQL Company
RegardsPavel Wenjing > > -- > Robert Haas > EnterpriseDB: http://www.enterprisedb.com > The Enterprise PostgreSQL Company
Wenjing > > -- > Robert Haas > EnterpriseDB: http://www.enterprisedb.com > The Enterprise PostgreSQL Company
With Regards,Prabhat Kumar SahuEnterpriseDB: http://www.enterprisedb.com
pgsql-hackers by date:
Соглашаюсь с условиями обработки персональных данных