|
From: Dmitry Y. <fir...@ya...> - 2010-01-08 21:01:16
|
All, The issue could be caused by the garbage records inside RDB$USER_PRIVILEGES. It seems that nobody can collect it in the cooperative mode, as permissions are always read by the object name but after dropping it's no longer known to anyone. After the first test run I can see about 9000 record versions linked to the current user and different dropped tables. Every DROP TABLE statement invokes MET_revoke() which queries permissions using both the object name and the user name and both these predicates are mapped to indices. The last one requires a full index scan in this test case. During the next run the index scan takes more time (as the number of garbage keys grows) and so on. Running "select count(*) from rdb$user_privileges" between runs seem curing the problem (at the first glance). There are no stuck transactions there. Dmitry |