Task #1387
closedACC - optimalization (one account with more than 50 roles)
Added by Vít Švanda about 6 years ago. Updated almost 6 years ago.
100%
Updated by Vít Švanda about 6 years ago
- Target version changed from Opal (9.4.0-rc.1) to Opal (9.4.0)
Updated by Vít Švanda almost 6 years ago
- Target version changed from Opal (9.4.0) to Quartz (9.6.0)
Updated by Vít Švanda almost 6 years ago
- Target version changed from Quartz (9.6.0) to Pyrite (9.5.0)
Updated by Vít Švanda almost 6 years ago
- Estimated time changed from 4.00 h to 44.00 h
Updated by Vít Švanda almost 6 years ago
Main problem occurrs on assigning new roles.
I created tests for compare progress of optimalization:
Assign 10 new roles -> 10 s
Assing 50 new roles -> 45 s
Assing 100 new roles -> 200 s
Assing 200 new roles -> 1000 s
Updated by Vít Švanda almost 6 years ago
- % Done changed from 0 to 50
Current state of optimalization:
Sync / H2 DB/ Include provisioning / Checking existing identity-account on change the UID - ON
Assing 50 new roles -> 45 s
Assing 100 new roles -> 96s
Assing 200 new roles -> 500s
Sync / H2 DB / Include provisioning/ Checking existing identity-account on change the UID - OFF
Assing 50 new roles -> 34 s
Assing 100 new roles -> 42s
Assing 200 new roles -> 187s
Updated by Vít Švanda almost 6 years ago
- Status changed from In Progress to Needs feedback
- Assignee changed from Vít Švanda to Radek Tomiška
- % Done changed from 50 to 90
Optimalization are here:
https://github.com/bcvsolutions/CzechIdMng/commit/7a8175fa3dc7b9f5cfbdfd65ff6cea057d87c838
Performence tests are here (by default are skipped):
https://github.com/bcvsolutions/CzechIdMng/commit/5f7e78a2b696eaef8991bdce1286658cfbf4804d
For bigger optimization is necessary to implement "elementary ACM" (#1534).
Updated by Vít Švanda almost 6 years ago
I continued with optimalization of remove a identity-roles.
Delete is already implemented as elementary. I created performance test for delete:
--------------
Sync / H2 DB/ Include provisioning
Remove 100 roles -> 37s
Remove 200 roles -> 150s
For remove one identity-roles was used 449 selects (includes subselects).
--------------
This are not good results, mainly if the time for remove double of identity-roles spend four times more time.
Updated by Vít Švanda almost 6 years ago
- Status changed from Needs feedback to In Progress
- Assignee changed from Radek Tomiška to Vít Švanda
I did optimalization with this results:
--------------
Sync / H2 DB/ Include provisioning
Remove 100 roles -> 18s
Remove 200 roles -> 44s
For remove one identity-roles was used 220 selects (includes subselects).
--------------
This are much more better results, mainly the time needed for remove more identity-roles is almost linear.
What was optimalized?:
- Mainly reduction of selects (counts instead select, more efective searching ...).
- Check on change of authorities are realized only if removed identity-role (role) has assignes some authorizations (IdentityRoleDeleteAuthoritiesProcessor).
Commit: https://github.com/bcvsolutions/CzechIdMng/commit/d896c9b9af13f4c88285bd2629ba59e0cac73231
Updated by Vít Švanda almost 6 years ago
Next optimalizations for provisioning and fix (find of overridden attributes).
- Filtering in SysRoleSystemAttributes was refactored for using a toPredicate.
Commit: https://github.com/bcvsolutions/CzechIdMng/commit/6abb601ab2fdec2189c21e2bdcffde74ae7737b2
Updated by Vít Švanda almost 6 years ago
I did next optimalization with this results:
--------------
Sync / H2 DB/ Include provisioning
Remove 100 roles -> 12s
Remove 200 roles -> 32s
--------------
Sync / H2 DB/ Provisioning skiped
Remove 200 roles (for identity, for on account)-> 3,7s
What was optimalized?:
- Optimalization in provisioning part (redundant selects ... ).
- Provisioning (for delete) is executed only for identity-roles with some mapped system.
- I implemented skip of provisioning to the delete identity-role processor. This skip is very useful (3,7s 32s) for situations, when we want to delete many roles for one user (on one account). In this case we can delete all identity-role with skip and only last one delete without skip.
Commit: https://github.com/bcvsolutions/CzechIdMng/commit/278cb219aaad714668659442cbbae80fdd1a11c0
Updated by Vít Švanda almost 6 years ago
- Status changed from In Progress to Needs feedback
- Assignee changed from Vít Švanda to Radek Tomiška
Updated by Radek Tomiška almost 6 years ago
- Status changed from Needs feedback to Resolved
- Assignee changed from Radek Tomiška to Vít Švanda
- % Done changed from 90 to 100
I did test of account management a review a code, it looks nice. I was not able to broke it :)
Special thx for the rewrite of repositories find method int service.
Updated by Vít Švanda almost 6 years ago
- Status changed from Resolved to Closed