首页 > 数据库 > mysql教程 > Canrenametablebutcannottruncatetable

Canrenametablebutcannottruncatetable

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
发布: 2016-06-07 16:06:08
原创
1206 人浏览过

一个表无法truncate但是可以rename,这个乍听起来觉得好奇怪,下面模拟该过程。 3个session: session1执行truncate和rename操作; session2执行lock表操作; session3进行监控。 session1: [gpadmin@wx60 contrib]$ psql gtlionspsql (8.2.15)Type help for

一个表无法truncate但是可以rename,这个乍听起来觉得好奇怪,下面模拟该过程。
3个session:
session1执行truncate和rename操作;
session2执行lock表操作;
session3进行监控。

session1:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

[gpadmin@wx60 contrib]$ psql gtlions

psql (8.2.15)

Type "help" for help.

  

gtlions=# \d test

             Table "public.test"

 Column |          Type          | Modifiers

--------+------------------------+-----------

 id     | integer                |

 name   | character varying(200) |

Indexes:

    "idxtestid" btree (id)

    "idxtestname" btree (name)

Distributed by: (id)

  

gtlions=# select pg_backend_pid();

 pg_backend_pid

----------------

           1473

(1 row)

  

gtlions=# truncate table test;

Cancel request sent

ERROR:  relation "test" does not exist

gtlions=# alter table test rename to test1;

ALTER TABLE

登录后复制



session2:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

[gpadmin@wx60 ~]$ psql gtlions

psql (8.2.15)

Type "help" for help.

  

gtlions=# select pg_backend_pid();

 pg_backend_pid

----------------

           1555

(1 row)

  

gtlions=# begin;

BEGIN

gtlions=# select * from test limit 10;

  id   |    name   

-------+------------

 19672 | 19672-asfd

 19674 | 19674-asfd

 19676 | 19676-asfd

 19678 | 19678-asfd

 19680 | 19680-asfd

 19682 | 19682-asfd

 19684 | 19684-asfd

 19686 | 19686-asfd

 19688 | 19688-asfd

 19690 | 19690-asfd

(10 rows)

  

gtlions=# end;

COMMIT

登录后复制



session3:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

[gpadmin@wx60 ~]$ psql gtlions

psql (8.2.15)

Type "help" for help.

  

gtlions=# select locktype,relation::regclass,pid,mode,granted,gp_segment_id from pg_locks where pid in (1473,1555) order by pid;

 locktype | relation | pid | mode | granted | gp_segment_id

----------+----------+-----+------+---------+---------------

(0 rows)

  

gtlions=# select locktype,relation::regclass,pid,mode,granted,gp_segment_id from pg_locks where pid in (1473,1555) order by pid;

   locktype    |  relation   | pid  |      mode       | granted | gp_segment_id

---------------+-------------+------+-----------------+---------+---------------

 relation      | test        | 1555 | AccessShareLock | t       |            -1

 relation      | idxtestname | 1555 | AccessShareLock | t       |            -1

 transactionid |             | 1555 | ExclusiveLock   | t       |            -1

 relation      | idxtestid   | 1555 | AccessShareLock | t       |            -1

(4 rows)

  

gtlions=# select locktype,relation::regclass,pid,mode,granted,gp_segment_id from pg_locks where pid in (1473,1555) order by pid;

   locktype    |  relation   | pid  |        mode         | granted | gp_segment_id

---------------+-------------+------+---------------------+---------+---------------

 transactionid |             | 1473 | ExclusiveLock       | t       |            -1

 relation      | test        | 1473 | AccessExclusiveLock | f       |            -1

 transactionid |             | 1555 | ExclusiveLock       | t       |            -1

 relation      | idxtestid   | 1555 | AccessShareLock     | t       |            -1

 relation      | idxtestname | 1555 | AccessShareLock     | t       |            -1

 relation      | test        | 1555 | AccessShareLock     | t       |            -1

(6 rows)

登录后复制



-EOF-
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板