rbac-optimization #80
@ -245,9 +245,9 @@ create index on RbacPermission (objectUuid, op);
|
|||||||
create index on RbacPermission (opTableName, op);
|
create index on RbacPermission (opTableName, op);
|
||||||
```
|
```
|
||||||
|
|
||||||
###
|
### LAZY loading for Relation.anchorPerson/.holderPerson/
|
||||||
|
|
||||||
The import took 21mins with these statistics:
|
At this point, the import took 21mins with these statistics:
|
||||||
|
|
||||||
| query | calls | total_m | mean_ms |
|
| query | calls | total_m | mean_ms |
|
||||||
|-------|-------|---------|---------|
|
|-------|-------|---------|---------|
|
||||||
@ -268,8 +268,6 @@ The import took 21mins with these statistics:
|
|||||||
| insert into hs_booking_item (resources, version, projectuuid, type, parentitemuuid, validity, uuid, caption) values (new.resources, new. version, new. projectuuid, new. type, new. parentitemuuid, new. validity, new. uuid, new. caption) returning * | 926 | 0 | 7 |
|
| insert into hs_booking_item (resources, version, projectuuid, type, parentitemuuid, validity, uuid, caption) values (new.resources, new. version, new. projectuuid, new. type, new. parentitemuuid, new. validity, new. uuid, new. caption) returning * | 926 | 0 | 7 |
|
||||||
|
|
||||||
|
|
||||||
### LAZY loading for Relation.anchorPerson/.holderPerson/
|
|
||||||
|
|
||||||
The slowest query now was fetching Relations joined with Contact, Anchor-Person and Holder-Person, for all tables using the restricted (RBAC) views (_rv).
|
The slowest query now was fetching Relations joined with Contact, Anchor-Person and Holder-Person, for all tables using the restricted (RBAC) views (_rv).
|
||||||
|
|
||||||
We changed these mappings from `EAGER` (default) to `LAZY` to `@ManyToOne(fetch = FetchType.LAZY)` and got this result:
|
We changed these mappings from `EAGER` (default) to `LAZY` to `@ManyToOne(fetch = FetchType.LAZY)` and got this result:
|
||||||
@ -292,6 +290,12 @@ We changed these mappings from `EAGER` (default) to `LAZY` to `@ManyToOne(fetch
|
|||||||
| insert into hs_booking_item (resources, version, projectuuid, type, parentitemuuid, validity, uuid, caption) values (new.resources, new. version, new. projectuuid, new. type, new. parentitemuuid, new. validity, new. uuid, new. caption) returning * | 926 | 0 | 7 |
|
| insert into hs_booking_item (resources, version, projectuuid, type, parentitemuuid, validity, uuid, caption) values (new.resources, new. version, new. projectuuid, new. type, new. parentitemuuid, new. validity, new. uuid, new. caption) returning * | 926 | 0 | 7 |
|
||||||
insert into RbacGrants (grantedByTriggerOf, ascendantuuid, descendantUuid, assumed) values (currentTriggerObjectUuid(), superRoleId, subRoleId, doAssume) on conflict do nothing | 40472 | 0 | 0 |
|
insert into RbacGrants (grantedByTriggerOf, ascendantuuid, descendantUuid, assumed) values (currentTriggerObjectUuid(), superRoleId, subRoleId, doAssume) on conflict do nothing | 40472 | 0 | 0 |
|
||||||
|
|
||||||
|
Now, finally, the total runtime of the import was down to 12 minutes. This is repeatable, where originally, the import took about 25mins in most cases and just rarely - and for unknown reasons - 10min.
|
||||||
|
|
||||||
|
## Summary
|
||||||
|
|
||||||
Now, finally, the total runtime of the import was down to 12 minutes.
|
That the import runtime is down to about 12min is repeatable, where originally, the import took about 25mins in most cases and just rarely - and for unknown reasons - just 10min.
|
||||||
|
|
||||||
|
Merging the recursive CTE query to determine the RBAC SELECT-permission, made it more clear which business-queries take the time.
|
||||||
|
|
||||||
|
Avoiding EAGER-loading where not neccessary, reduced the total runtime of the import to about the half.
|
||||||
|
Loading…
Reference in New Issue
Block a user