PTF - Data Export Test Report (Ramsons) [ECS]

PTF - Data Export Test Report (Ramsons) [ECS]

Overview

  • This document contains the results of testing Data Export (MARC BIB) on the Ramsons [ECS] release.

https://folio-org.atlassian.net/browse/PERF-977 

Summary

  • Data Export tests finished successfully on RCON environment using the profiles Default instances export job profile and srs - holdings and items job profile.

  • Data Export test executed on College tenant only.

  • Ramsons release results 

    • Data Export:

      • Default instances export job profile

        • File with 1k records     - 2 seconds

        • File with 100k records - 1 minute 55 seconds

        • File with 500k records - 4 minute 26 seconds

      • srs - holdings and items

        • File with 1k records     - 7 seconds

        • File with 100k records - 5 minute 13 seconds

        • File with 500k records - 8 minute 19 seconds

  • Comparing Quesnelia (previous results) and Ramsons releases results. DE perform better in Ramsons. Improvement depends on file size and job profile.

    • Default instances export job profile

      • File with 100k records - 27%

      • File with 500k records - 36%

    • srs - holdings and items

      • File with 100k records - 17%

      • File with 500k records - 11%

  • Mod-data-export used most of CPU with Default instances export job profile - 51% and srs - holdings and items - 33% with the 500k records file

  • Concurrent Data Export testing with srs - holdings and items job profile revealed the slowness on central tenant. It completed with errors on UI side. It should be investigated.

Test Runs

Profile

Test #

CSV  File

DE MARC Bib (Default instances export job profile)  

1

1k.csv

2

100k.csv

3

500k.csv

DE MARC Bib (srs - holdings and items)  

4

1k.csv

5

100k.csv

6

500k.csv

Test Results

This table contains durations for Data Export with 2 job profiles. 

Profile

CSV  File

Tenant College (cs00000int_0001)

Result

Status

DE MARC Bib (Default instances export job profile)

1k.csv

0:00:02

COMPLETED

100k.csv

0:01:55

COMPLETED

500k.csv

0:04:26

COMPLETED

DE MARC Bib (srs - holdings and items)

1k.csv

0:00:07

COMPLETED

100k.csv

0:05:13

COMPLETED

500k.csv

0:08:19

COMPLETED

 

This table contains durations for Data Export for 3 tenants concurrently (this additional experiment was not in scope of the ticket).

Job Profile

File Size

Central Tenant

College tenant

Professional tenant

Default instances export job profile

500k

00:06:12

00:06:35

no data

 

100k

00:04:21

00:01:55

00:02:31

srs - holdings and items

500k

00:41:33*

00:11:44

no data

 

100k

00:33:58*

00:06:51

00:08:09

* DE with srs - holdings and items job on central tenant completed with errors (2025-01-31T13:47:10.291+00:00 ERROR ui-data-export.error.instance.noPermission).

Errors

Errors occurred possibly  because of central tenant has no items and holding records.

ERROR onsFunctionHolder$18 Location is not found by the given id: null

ItemsResolverService retrieveHoldingsAndItemsByInstanceId

Comparison

This table contains durations comparison between Poppy and Quesnelia releases.

Profile

CSV  File

 Quesnelia (cs00000int_0001) College tenant

 Ramsons (cs00000int_0001) College tenant

DE Duration, DELTA Quesnelia/Ramsons

Duration (hh:mm:ss)

percent / time

DE MARC Bib (Default instances export job profile)

1k.csv

00:00:02

00:00:02

0.00% / 0 sec

100k.csv

00:02:39

00:01:55

-27.67% / 44 sec

500k.csv

00:05:21

00:04:26

-17.13% / 55 sec

DE MARC Bib (srs - holdings and items)

1k.csv

00:00:05

00:00:07

40.00% / 2 sec

100k.csv

00:08:15

00:05:13

-36.77% / 3 min 2 sec

500k.csv

00:09:22

00:08:19

-11.21% / 1 min 3 sec

 

Resource utilization

srs - holdings and items Default instances export job profil Module CPU Module CPU mod-data-export-b 33.01 mod-data-export-b 51.34 mod-pubsub-b 2.99 mod-pubsub-b 2.87 mod-inventory-b 1.33 mod-inventory-b 1.24 mod-source-record-storage-b 0.38 mod-source-record-storage-b 0.36 mod-data-export-worker-b 0.35 mod-data-export-worker-b 0.34 mod-inn-reach-b 0.29 mod-consortia-b 0.28 mod-consortia-b 0.28 mod-inn-reach-b 0.26 mod-search-b 0.25 mod-search-b 0.23 mod-inventory-storage-b 0.22 mod-inventory-storage-b 0.21 okapi-b 0.19 mod-orders-storage-b 0.16 mod-circulation-storage-b 0.18 mod-source-record-manager-b 0.14 mod-orders-storage-b 0.18 mod-circulation-storage-b 0.14 mod-source-record-manager-b 0.15 okapi-b 0.12 mod-dcb-b 0.12 mod-remote-storage-b 0.12 mod-data-export-spring-b 0.12 mod-dcb-b 0.11 mod-remote-storage-b 0.11 mod-users-b 0.11 mod-entities-links-b 0.11 mod-data-export-spring-b 0.1 mod-users-b 0.1 mod-entities-links-b 0.1 mod-quick-marc-b 0.1 mod-quick-marc-b 0.1 mod-audit-b 0.09 mod-audit-b 0.09

Service CPU Utilization

Maximum CPU utilization was in 500k file: Default instances export job profile - 51%, srs - holdings and items - 33%

Service Memory Utilization

Maximum memory consumption was in mod-agreements - 92%, data-export-worker - 86%, mod-data-export - 81%, mod-oa - 75%

 

DB CPU Utilization

Maximum RDS CPU 500k file: srs - holdings and items job - 32%, Default instances export job - 23%

DB Connections

DB connections - 1173 in average. No spikes with different file size or job profile.

DB load

DE MARC Bib (srs - holdings and items) job profile

DE MARC Bib (Default instances export job profile)

Top SQL-queries

DE MARC Bib (srs - holdings and items) job profile

#

TOP SQL statements - DE MARC Bib (srs - holdings and items) job profile

#

TOP SQL statements - DE MARC Bib (srs - holdings and items) job profile

1

SELECT id, jsonb, holdings_record_id FROM cs00000int_0001_mod_data_export.v_item WHERE holdings_record_id in ($1)

2

select hre1_0.id,hre1_0.instance_id,hre1_0.jsonb from v_holdings_record hre1_0 where hre1_0.instance_id=$1

3

select mre1_0.id,mre1_0.content,mre1_0.external_id,mre1_0.generation,mre1_0.leader_record_status,mre1_0.record_type,mre1_0.state,mre1_0.suppress_discovery from v_marc_records_lb mre1_0 where mre1_0.external_id in ($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,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41,$42,$43,$44,$45,$46,$47,$48,$49,$50,$51,$52,$53,$54,$55,$56,$57,$58,$59,$60,$61,$62,$63,$64,$65,$66,$67,$68,$69,$70,$71,$72,$73,$74,$75,$76,$77,$78,$79,$80,$81,$82,$83,$84,$85,$86,$87,$88,$89,$90,$91,$92,$93,$94,$95,$96,$97,$98,$99,$100,$101,$102,$103,$104,$105,$106,$107,$108,$109,$110,$111,$112,$113,$114,$115,$116,$117,$118,$119,$120,$121,$122,$123,$124,$125,$126,$127,$128,$129,$130,$131,$132,$133,$134,$135,$136,$137,$138,$139,$140,$141,$142,$143,$144,$145,$146,$147,$148,$149,$150,$151,$152,$153,$154,$155,$156,$157,$158,$159,$160,$161,$162,$163,$164,$165,$166,$167,$168,$169,$170,$171,$172,$173,$174,$175,$176,$177,$178,$179,$180,$181,$182,$183,$184,$185,$186,$187,$188,$189,$190,$191,$192,$193,$194,$195,$196,$197,$198,$199,$200,$201,$202,$203,$204,$205,$206,$207,$208,$209,$210,$211,$212,$213,$214,$215,$216,$217,$218,$219,$220,$221,$222,$223,$224,$225,$226,$227,$228,$229,$230,$231,$232,$233,$234,$235,$236,$237,$238,$239,$240,$241,$242,$243,$244,$245,$246,$247,$248,$249,$250,$251,$252,$253,$254,$255,$256,$257,$258,$259,$260,$261,$262,$263,$264,$265,$266,$267,$268,$269,$270,$271,$272,$273,$274,$275,$276,$277,$278,$279,$280,$281,$282,$283,$284,$285,$286,$287,$288,$289,$290,$291,$292,$293,$294,$295,$296,$297,$298,$299,$300,$301,$302,$303,$304,$305,$306,$307,$308,$309,$310,$311,$312,$313,$314,$315,$316,$317,$318,$319,$320,$321,$322,$323,$324,$325,$326,$327,$328,$329,$330,$331,$332,$333,$334,$335,$336,$337,$338,$339,$340,$341,$342,$343,$344,$345,$346,$347,$348,$349,$350,$351,$352,$353,$354,$355,$356,$357,$358,$359,$360,$361,$362,$363,$364,$365,$366,$367,$368,$369,$370,$371,$372,$373,$374,$375,$376,$377,$378,$379,$380,$381,$382,$383,$384,$385,$386,$387,$388,$389,$390,$391,$392,$393,$394,$395,$396,$397,$398,$399,$400,$401,$402,$403,$404,$405,$406,$407,$408,$409,$410,$411,$412,$413,$414,$415,$416,$417,$418,$419,$420,$421,$422,$423,$424,$425,$426,$427,$428,$429,$430,$431,$432,$433,$434,$435,$436,$437,$438,$439,$440,$441,$442,$443,$444,$445,$446,$447,$448,$449,$450,$451,$452,$453,$454,$455,$456,$457,$458,$459,$460,$461,$462,$463,$464,$465,$466,$467,$468,$469,$470,$471,$472,$473,$474,$475,$476,$477,$478,$479,$480,$481,$482,$483,$484,$485,$486,$487,$488,$489,$490,$491,$492,$493,$494,$495,$496,$497,$498,$499,$500,$501,$502,$503,$504,$505,$506,$507,$508,$509,$510,$511,$512,$513,$514,$515,$516,$517,$518,$519,$520,$521,$522,$523,$524,$525,$526,$527,$528,$529,$530,$531,$532,$533,$534,$535,$536,$537,$538,$539,$540,$541,$542,$543,$544,$545,$546,$547,$548,$549,$550,$551,$552,$553,$554,$555,$556,$557,$558,$559,$560,$561,$562,$563,$564,$565,$566,$567,$568,$569,$570,$571,$572,$573,$574,$575,$576,$577,$578,$579,$580,$581,$582,$583,$584,$585,$586,$587,$588,$589,$590,$591,$592,$593,$594,$595,$596,$597,$598,$599,$600,$601,$602,$603,$604,$605,$606,$607,$608,$609,$610,$611,$612,$613,$614,$615,$616,$617,$618,$619,$620,$621,$622,$623,$624,$625,$626,$627,$628,$629,$630,$631,$632,$633,$634,$635,$636,$637,$638,$639,$640,$641,$642,$643,$644,$645,$646,$647,$648,$649,$650,$651,$652,$653,$654,$655,$656,$657,$658,$659,$660,$661,$662,$663,$664,$665,$666,$667,$668,$669,$670,$671,$672,$673,$674,$675,$676,$677,$678,$679,$680,$681,$682,$683,$684,$685,$686,$687,$688,$689,$690,$691,$692,$693,$694,$695,$696,$697,$698,$699,$700,$701,$702,$703,$704,$705,$706,$707,$708,$709,$710,$711,$712,$713,$714,$715,$716,$717,$718,$719,$720,$721,$722,$723,$724,$725,$726,$727,$728,$729,$730,$731,$732,$733,$734,$735,$736,$737,$738,$739,$740,$741,$742,$743,$744,$745,$746,$747,$748,$749,$750,$751,$752,$753,$754,$755,$756,$757,$758,$759,$760,$761,$762,$763,$764,$765,$766,$767,$768,$769,$770,$771,$772,$773,$774,$775,$776,$777,$778,$779,$780,$781,$782,$783,$784,$785,$786,$787,$788,$789,$790,$791,$792,$793,$794,$795,$796,$797,$798

4

SELECT cs00000int_0001_mod_feesfines.count_estimate('SELECT * FROM cs00000int_0001_mod_feesfines.accounts WHERE (((((((((((((((((((((((((((((((((((((((((((((((((CASE WHEN length(lower(f_unaccent(''ea7f7711-be83-4182-905b-624be9b64b7c''))) <= 600 THEN left(lower(f_unaccent(accounts.jsonb->>''loanId'')),600) LIKE lower(f_unaccent(''ea7f7711-be83-4182-905b-624be9b64b7c'')) ELSE left(lower(f_unaccent(accounts.jsonb->>''loanId'')),600) LIKE left(lower(f_unaccent(''ea7f7711-be83-4182-905b-624be9b64b7c'')),600) AND lower(f_unaccent(accounts.jsonb->>''loanId'')) LIKE lower(f_unaccent(''ea7f7711-be83-4182-905b-624be9b64b7c'')) END) OR (CASE WHEN length(lower(f_unaccent(''681cc527-c044-41af-96d1-e6e7d171f824''))) <= 600 THEN left(lower(f_unaccent(accounts.jsonb->>''loanId'')),600) LIKE lower(f_unaccent(''681cc527-c044-41af-96d1-e6e7d171f824'')) ELSE left(lower(f_unaccent(accounts.jsonb->>''loanId'')),600) LIKE left(lower(f_unaccent(''681cc527-c044-41af-96d1-e6e7d171f824'')),600) AND lower(f_unaccent(accounts.jsonb->>''loanId'')) LIKE lower(f_unaccent(''681cc527-c044-41af-96d1-e6e7d171f824'')) END)) OR (CASE WHEN length(lower(f_unaccent(''341f6aa4-aa7f-453d-a21d-8e6b475439ff''))) <= 600 THEN left(lower(f_unaccent(accounts.jsonb->>''loanId'')),600) LIKE lower(f_unaccent(''341f6aa4-aa7f-453d-a21d-8e6b475439ff'')) ELSE left(lower(f_unaccent(accounts.jsonb->>''loanId'')),600) LIKE left(lower(f_unaccent(''341f6aa4-aa7f-453d-a21d-8e6b475439ff'')),600) AND lower(f_unaccent(accounts.jsonb->>''loanId'')) LIKE lower(f_unaccent(''341f6aa4-aa7f-453d-a21d-8e6b475439ff'')) END)) OR (CASE WHEN length(lower(f_unaccent(''02c0a65a-8205-461a-aaf3-36d1b92a3133''))) <= 600 THEN left(lower(f_unaccent(accounts.jsonb->>''loanId'')),600) LIKE lower(f_unaccent(''02c0a65a-8205-461a-aaf3-36d1b92a3133'')) ELSE left(lower(f_unaccent(accounts.jsonb->>''loanId'')),600) LIKE left(lower(f_unaccent(''02c0a65a-8205-461a-aaf3-36d1b92a3133'')),600) AND lower(f_unaccent(accounts.jsonb->>''loanId'')) LIKE lower(f_unaccent(''02c0a65a-8205-461a-aaf3-36d1b92a3133'')) END)) OR (CASE WHEN length(lower(f_unaccent(''d57f6388-0791-4bb9-86a5-86b19b6ede58''))) <= 600 THEN left(lower(f_unaccent(accounts.jsonb->>''loanId'')),600) LIKE lower(f_unaccent(''d57f6388-0791-4bb9-86a5-86b19b6ede58'')) ELSE left(lower(f_unaccent(accounts.jsonb->>''loanId'')),600) LIKE left(lower(f_unaccent(''d57f6388-0791-4bb9-86a5-86b19b6ede58'')),600) AND lower(f_unaccent(accounts.jsonb->>''loanId'')) LIKE lower(f_unaccent(''d57f6388-0791-4bb9-86a5-86b19b6ede58'')) END)) OR (CASE WHEN length(lower(f_unaccent(''28254d08-9c41-4d17-bb78-179e18f7c81a''))) <= 600 THEN left(lower(f_unaccent(accounts.jsonb->>''loanId'')),600) LIKE lower(f_unaccent(''28254d08-9c41-4d17-bb78-179e18f7c81a'')) ELSE left(lower(f_unaccent(accounts.jsonb->>''loanId'')),600) LIKE left(lower(f_unaccent(''28254d08-9c41-4d17-bb78-179e18f7c81a'')),600) AND lower(f_unaccent(accounts.jsonb->>''loanId'')) LIKE lower(f_unaccent(''28254d08-9c41-4d17-bb78-179e18f7c81a'')) END)) OR (CASE WHEN length(lower(f_unaccent(''bc123126-a5c0-4588-8a5d-35012ea66964''))) <= 600 THEN left(lower(f_unaccent(accounts.jsonb->>''loanId'')),600) LIKE lower(f_unaccent(''bc123126-a5c0-4588-8a5d-35012ea66964'')) ELSE left(lower(f_unaccent(accounts.jsonb->>''loanId'')),600) LIKE left(lower(f_unaccent(''bc123126-a5c0-4588-8a5d-35012ea66964'')),600) AND lower(f_unaccent(accounts.jsonb->>''loanId'')) LIKE lower(f_unaccent(''bc123126-a5c0-4588-8a5d-35012ea66964'')) END)) OR (CASE WHEN length(lower(f_unaccent(''8d4ccfce-34c3-476c-bdcf-b06cb58a0a54''))) <= 600 THEN left(lower(f_unaccent(accounts.jsonb->>''loanId'')),600) LIKE lower(f_unaccent(''8d4ccfce-34c3-476c-bdcf-b06cb58a0a54'')) ELSE left(lower(f_unaccent(accounts.jsonb->>''loanId'')),600) LIKE left(lower(f_unaccent(''8d4ccfce-34c3-476c-bdcf-b06cb58a0a54'')),600) AND lower(f_unaccent(accounts.jsonb->>''loanId'')) LIKE lower(f_unaccent(''8d4ccfce-34c3-476c-bdcf-b06cb58a0a54'')) END)) OR (CASE WHEN length(lower(f_unaccent(''7b38f350-3b5e-494e-8496-8365631f85bb''))) <= 600 THEN left(lower(f_unaccent(accounts.jsonb->>''loan

5

select eie1_0.id,eie1_0.instance_id,eie1_0.job_execution_id from job_executions_export_ids eie1_0 where eie1_0.job_execution_id=$1 and eie1_0.instance_id>=$2 and eie1_0.instance_id<=$3 order by eie1_0.instance_id offset $4 rows fetch first $5 rows only

6

INSERT INTO job_executions_export_ids (job_execution_id, instance_id) VALUES ($1, $2) ON CONFLICT DO NOTHING

7

select iwhe1_0.id,iwhe1_0.hrid from v_instance_hrid iwhe1_0 where iwhe1_0.id in ($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,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41,$42,$43,$44,$45,$46,$47,$48,$49,$50,$51,$52,$53,$54,$55,$56,$57,$58,$59,$60,$61,$62,$63,$64,$65,$66,$67,$68,$69,$70,$71,$72,$73,$74,$75,$76,$77,$78,$79,$80,$81,$82,$83,$84,$85,$86,$87,$88,$89,$90,$91,$92,$93,$94,$95,$96,$97,$98,$99,$100,$101,$102,$103,$104,$105,$106,$107,$108,$109,$110,$111,$112,$113,$114,$115,$116,$117,$118,$119,$120,$121,$122,$123,$124,$125,$126,$127,$128,$129,$130,$131,$132,$133,$134,$135,$136,$137,$138,$139,$140,$141,$142,$143,$144,$145,$146,$147,$148,$149,$150,$151,$152,$153,$154,$155,$156,$157,$158,$159,$160,$161,$162,$163,$164,$165,$166,$167,$168,$169,$170,$171,$172,$173,$174,$175,$176,$177,$178,$179,$180,$181,$182,$183,$184,$185,$186,$187,$188,$189,$190,$191,$192,$193,$194,$195,$196,$197,$198,$199,$200,$201,$202,$203,$204,$205,$206,$207,$208,$209,$210,$211,$212,$213,$214,$215,$216,$217,$218,$219,$220,$221,$222,$223,$224,$225,$226,$227,$228,$229,$230,$231,$232,$233,$234,$235,$236,$237,$238,$239,$240,$241,$242,$243,$244,$245,$246,$247,$248,$249,$250,$251,$252,$253,$254,$255,$256,$257,$258,$259,$260,$261,$262,$263,$264,$265,$266,$267,$268,$269,$270,$271,$272,$273,$274,$275,$276,$277,$278,$279,$280,$281,$282,$283,$284,$285,$286,$287,$288,$289,$290,$291,$292,$293,$294,$295,$296,$297,$298,$299,$300,$301,$302,$303,$304,$305,$306,$307,$308,$309,$310,$311,$312,$313,$314,$315,$316,$317,$318,$319,$320,$321,$322,$323,$324,$325,$326,$327,$328,$329,$330,$331,$332,$333,$334,$335,$336,$337,$338,$339,$340,$341,$342,$343,$344,$345,$346,$347,$348,$349,$350,$351,$352,$353,$354,$355,$356,$357,$358,$359,$360,$361,$362,$363,$364,$365,$366,$367,$368,$369,$370,$371,$372,$373,$374,$375,$376,$377,$378,$379,$380,$381,$382,$383,$384,$385,$386,$387,$388,$389,$390,$391,$392,$393,$394,$395,$396,$397,$398,$399,$400,$401,$402,$403,$404,$405,$406,$407,$408,$409,$410,$411,$412,$413,$414,$415,$416,$417,$418,$419,$420,$421,$422,$423,$424,$425,$426,$427,$428,$429,$430,$431,$432,$433,$434,$435,$436,$437,$438,$439,$440,$441,$442,$443,$444,$445,$446,$447,$448,$449,$450,$451,$452,$453,$454,$455,$456,$457,$458,$459,$460,$461,$462,$463,$464,$465,$466,$467,$468,$469,$470,$471,$472,$473,$474,$475,$476,$477,$478,$479,$480,$481,$482,$483,$484,$485,$486,$487,$488,$489,$490,$491,$492,$493,$494,$495,$496,$497,$498,$499,$500,$501,$502,$503,$504,$505,$506,$507,$508,$509,$510,$511,$512,$513,$514,$515,$516,$517,$518,$519,$520,$521,$522,$523,$524,$525,$526,$527,$528,$529,$530,$531,$532,$533,$534,$535,$536,$537,$538,$539,$540,$541,$542,$543,$544,$545,$546,$547,$548,$549,$550,$551,$552,$553,$554,$555,$556,$557,$558,$559,$560,$561,$562,$563,$564,$565,$566,$567,$568,$569,$570,$571,$572,$573,$574,$575,$576,$577,$578,$579,$580,$581,$582,$583,$584,$585,$586,$587,$588,$589,$590,$591,$592,$593,$594,$595,$596,$597,$598,$599,$600,$601,$602,$603,$604,$605,$606,$607,$608,$609,$610,$611,$612,$613,$614,$615,$616,$617,$618,$619,$620,$621,$622,$623,$624,$625,$626,$627,$628,$629,$630,$631,$632,$633,$634,$635,$636,$637,$638,$639,$640,$641,$642,$643,$644,$645,$646,$647,$648,$649,$650,$651,$652,$653,$654,$655,$656,$657,$658,$659,$660,$661,$662,$663,$664,$665,$666,$667,$668,$669,$670,$671,$672,$673,$674,$675,$676,$677,$678,$679,$680,$681,$682,$683,$684,$685,$686,$687,$688,$689,$690,$691,$692,$693,$694,$695,$696,$697,$698,$699,$700,$701,$702,$703,$704,$705,$706,$707,$708,$709,$710,$711,$712,$713,$714,$715,$716,$717,$718,$719,$720,$721,$722,$723,$724,$725,$726,$727,$728,$729,$730,$731,$732,$733,$734,$735,$736,$737,$738,$739,$740,$741,$742,$743,$744,$745,$746,$747,$748,$749,$750,$751,$752,$753,$754,$755,$756,$757,$758,$759,$760,$761,$762,$763,$764,$765,$766,$767,$768,$769,$770,$771,$772,$773,$774,$775,$776,$777,$778,$779,$780,$781,$782,$783,$784,$785,$786,$787,$788,$789,$790,$791,$792,$793,$794,$795,$796,$797,$798,$799,$800,$801,$802,$803,$804,$805,$806,$807,$808,$809,$810,$811,$812,$813,$814,$815,$816,$817,$818,$819,$820,$821,$822,$823,$824,$8

 

DE MARC Bib (Default instances export job profile)

#

TOP 5 SQL statements - DE MARC Bib (Default instances export job profile)

#

TOP 5 SQL statements - DE MARC Bib (Default instances export job profile)

1

select mre1_0.id,mre1_0.content,mre1_0.external_id,mre1_0.generation,mre1_0.leader_record_status,mre1_0.record_type,mre1_0.state,mre1_0.suppress_discovery from v_marc_records_lb mre1_0 where mre1_0.external_id in ($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,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41,$42,$43,$44,$45,$46,$47,$48,$49,$50,$51,$52,$53,$54,$55,$56,$57,$58,$59,$60,$61,$62,$63,$64,$65,$66,$67,$68,$69,$70,$71,$72,$73,$74,$75,$76,$77,$78,$79,$80,$81,$82,$83,$84,$85,$86,$87,$88,$89,$90,$91,$92,$93,$94,$95,$96,$97,$98,$99,$100,$101,$102,$103,$104,$105,$106,$107,$108,$109,$110,$111,$112,$113,$114,$115,$116,$117,$118,$119,$120,$121,$122,$123,$124,$125,$126,$127,$128,$129,$130,$131,$132,$133,$134,$135,$136,$137,$138,$139,$140,$141,$142,$143,$144,$145,$146,$147,$148,$149,$150,$151,$152,$153,$154,$155,$156,$157,$158,$159,$160,$161,$162,$163,$164,$165,$166,$167,$168,$169,$170,$171,$172,$173,$174,$175,$176,$177,$178,$179,$180,$181,$182,$183,$184,$185,$186,$187,$188,$189,$190,$191,$192,$193,$194,$195,$196,$197,$198,$199,$200,$201,$202,$203,$204,$205,$206,$207,$208,$209,$210,$211,$212,$213,$214,$215,$216,$217,$218,$219,$220,$221,$222,$223,$224,$225,$226,$227,$228,$229,$230,$231,$232,$233,$234,$235,$236,$237,$238,$239,$240,$241,$242,$243,$244,$245,$246,$247,$248,$249,$250,$251,$252,$253,$254,$255,$256,$257,$258,$259,$260,$261,$262,$263,$264,$265,$266,$267,$268,$269,$270,$271,$272,$273,$274,$275,$276,$277,$278,$279,$280,$281,$282,$283,$284,$285,$286,$287,$288,$289,$290,$291,$292,$293,$294,$295,$296,$297,$298,$299,$300,$301,$302,$303,$304,$305,$306,$307,$308,$309,$310,$311,$312,$313,$314,$315,$316,$317,$318,$319,$320,$321,$322,$323,$324,$325,$326,$327,$328,$329,$330,$331,$332,$333,$334,$335,$336,$337,$338,$339,$340,$341,$342,$343,$344,$345,$346,$347,$348,$349,$350,$351,$352,$353,$354,$355,$356,$357,$358,$359,$360,$361,$362,$363,$364,$365,$366,$367,$368,$369,$370,$371,$372,$373,$374,$375,$376,$377,$378,$379,$380,$381,$382,$383,$384,$385,$386,$387,$388,$389,$390,$391,$392,$393,$394,$395,$396,$397,$398,$399,$400,$401,$402,$403,$404,$405,$406,$407,$408,$409,$410,$411,$412,$413,$414,$415,$416,$417,$418,$419,$420,$421,$422,$423,$424,$425,$426,$427,$428,$429,$430,$431,$432,$433,$434,$435,$436,$437,$438,$439,$440,$441,$442,$443,$444,$445,$446,$447,$448,$449,$450,$451,$452,$453,$454,$455,$456,$457,$458,$459,$460,$461,$462,$463,$464,$465,$466,$467,$468,$469,$470,$471,$472,$473,$474,$475,$476,$477,$478,$479,$480,$481,$482,$483,$484,$485,$486,$487,$488,$489,$490,$491,$492,$493,$494,$495,$496,$497,$498,$499,$500,$501,$502,$503,$504,$505,$506,$507,$508,$509,$510,$511,$512,$513,$514,$515,$516,$517,$518,$519,$520,$521,$522,$523,$524,$525,$526,$527,$528,$529,$530,$531,$532,$533,$534,$535,$536,$537,$538,$539,$540,$541,$542,$543,$544,$545,$546,$547,$548,$549,$550,$551,$552,$553,$554,$555,$556,$557,$558,$559,$560,$561,$562,$563,$564,$565,$566,$567,$568,$569,$570,$571,$572,$573,$574,$575,$576,$577,$578,$579,$580,$581,$582,$583,$584,$585,$586,$587,$588,$589,$590,$591,$592,$593,$594,$595,$596,$597,$598,$599,$600,$601,$602,$603,$604,$605,$606,$607,$608,$609,$610,$611,$612,$613,$614,$615,$616,$617,$618,$619,$620,$621,$622,$623,$624,$625,$626,$627,$628,$629,$630,$631,$632,$633,$634,$635,$636,$637,$638,$639,$640,$641,$642,$643,$644,$645,$646,$647,$648,$649,$650,$651,$652,$653,$654,$655,$656,$657,$658,$659,$660,$661,$662,$663,$664,$665,$666,$667,$668,$669,$670,$671,$672,$673,$674,$675,$676,$677,$678,$679,$680,$681,$682,$683,$684,$685,$686,$687,$688,$689,$690,$691,$692,$693,$694,$695,$696,$697,$698,$699,$700,$701,$702,$703,$704,$705,$706,$707,$708,$709,$710,$711,$712,$713,$714,$715,$716,$717,$718,$719,$720,$721,$722,$723,$724,$725,$726,$727,$728,$729,$730,$731,$732,$733,$734,$735,$736,$737,$738,$739,$740,$741,$742,$743,$744,$745,$746,$747,$748,$749,$750,$751,$752,$753,$754,$755,$756,$757,$758,$759,$760,$761,$762,$763,$764,$765,$766,$767,$768,$769,$770,$771,$772,$773,$774,$775,$776,$777,$778,$779,$780,$781,$782,$783,$784,$785,$786,$787,$788,$789,$790,$791,$792,$793,$794,$795,$796,$797,$798

2

INSERT INTO job_executions_export_ids (job_execution_id, instance_id) VALUES ($1, $2) ON CONFLICT DO NOTHING

3

select eie1_0.id,eie1_0.instance_id,eie1_0.job_execution_id from job_executions_export_ids eie1_0 where eie1_0.job_execution_id=$1 and eie1_0.instance_id>=$2 and eie1_0.instance_id<=$3 order by eie1_0.instance_id offset $4 rows fetch first $5 rows only

4

SELECT cs00000int_0001_mod_circulation_storage.count_estimate('SELECT jsonb,id FROM cs00000int_0001_mod_circulation_storage.scheduled_notice WHERE ((CASE WHEN length(lower(''2025-01-28T13:45:05.822Z'')) <= 600 THEN left(lower(scheduled_notice.jsonb->>''nextRunTime''),600) < lower(''2025-01-28T13:45:05.822Z'') ELSE left(lower(scheduled_notice.jsonb->>''nextRunTime''),600) < left(lower(''2025-01-28T13:45:05.822Z''),600) AND lower(scheduled_notice.jsonb->>''nextRunTime'') <= lower(''2025-01-28T13:45:05.822Z'') END) AND (CASE WHEN length(lower(''true'')) <= 600 THEN left(lower(scheduled_notice.jsonb->''noticeConfig''->>''sendInRealTime''),600) LIKE lower(''true'') ELSE left(lower(scheduled_notice.jsonb->''noticeConfig''->>''sendInRealTime''),600) LIKE left(lower(''true''),600) AND lower(scheduled_notice.jsonb->''noticeConfig''->>''sendInRealTime'') LIKE lower(''true'') END)) AND ((CASE WHEN length(lower(''Aged to lost - fine charged'')) <= 600 THEN left(lower(scheduled_notice.jsonb->>''triggeringEvent''),600) LIKE lower(''Aged to lost - fine charged'') ELSE left(lower(scheduled_notice.jsonb->>''triggeringEvent''),600) LIKE left(lower(''Aged to lost - fine charged''),600) AND lower(scheduled_notice.jsonb->>''triggeringEvent'') LIKE lower(''Aged to lost - fine charged'') END) OR (CASE WHEN length(lower(''Aged to lost & item returned - fine adjusted'')) <= 600 THEN left(lower(scheduled_notice.jsonb->>''triggeringEvent''),600) LIKE lower(''Aged to lost & item returned - fine adjusted'') ELSE left(lower(scheduled_notice.jsonb->>''triggeringEvent''),600) LIKE left(lower(''Aged to lost & item returned - fine adjusted''),600) AND lower(scheduled_notice.jsonb->>''triggeringEvent'') LIKE lower(''Aged to lost & item returned - fine adjusted'') END))')

Appendix

Infrastructure

PTF - consortia, okapi based environment

  • rcon 12 m6g.2xlarge EC2 instances located in US East (N. Virginia)us-east-1 

  • 1 instance of db.r6g.xlarge database instance: Writer instance

  • MSK fse-test

      • 4 kafka.m7g.xlarge brokers in 2 zones (2 brokers per zone)

      • Apache Kafka version 3.7.x, metadata mode - KRaft

      • EBS storage volume per broker 300 GiB

      • auto.create.topics.enable=true

      • log.retention.minutes=480

      • default.replication.factor=2

      • revision - 26

  • OpenSearch 2.13 ptf-test cluster

    • r6g.2xlarge.search 4 data nodes

    • r6g.large.search 3 dedicated master nodes

DB table records size:

  • Central tenant

    • instances -             1275791

    • items -                   0

    • holding records -  2

  • College tenant

    • instances -             1579925

    • items -                   2507902

    • holding records - 1764037

  • Professional tenant

    • instances -             200620

    • items -                   795424

    • holding records - 373823

 

Instances where 'source'='MARC'
cs00000int - 1.1 mln
cs00000int_0001 college - 1.1 mln
cs00000int_0002 professional - 170k
cs00000int_0003 school - 40k
cs00000int_0004 special - 0
cs00000int_0005 university - 22k

 

Cluster Resources - rcon-pvt (Fri Jan 17 14:41:06 UTC 2025) Module Task Definition Revision Module Version Task Count Mem Hard Limit Mem Soft Limit CPU Units Xmx Metaspace Size Max Metaspace Size mod-remote-storage 8 mod-remote-storage:3.3.3 2 4920 4472 0 3960 512 512 mod-finance-storage 7 mod-finance-storage:8.7.3 2 1024 896 0 700 88 128 mod-ncip 7 mod-ncip:1.15.6 2 1024 896 0 768 88 128 mod-agreements 8 mod-agreements:7.1.4 2 1592 1488 0 0 0 0 mod-ebsconet 8 mod-ebsconet:2.3.1 2 1248 1024 0 700 128 256 mod-organizations 7 mod-organizations:2.0.0 2 1024 896 0 700 88 128 mod-consortia 10 mod-consortia:1.2.2 2 5136 4776 0 2048 512 1024 edge-sip2 7 edge-sip2:3.3.1 2 1024 896 0 768 88 128 mod-serials-management 8 mod-serials-management:1.1.2 2 2480 2312 0 1792 384 512 mod-settings 7 mod-settings:1.1.0 2 1024 896 0 768 88 128 mod-data-import 10 mod-data-import:3.2.4 1 2048 1844 0 1292 384 512 mod-search 18 mod-search:4.0.7 2 2592 2480 0 1440 512 1024 edge-dematic 7 edge-dematic:2.3.1 1 1024 896 0 768 88 128 mod-inn-reach 4 mod-inn-reach:3.2.1-SNAPSHOT.102 2 3600 3240 0 2880 512 1024 mod-record-specifications 7 mod-record-specifications:1.0.2 2 1024 896 0 768 88 128 mod-tags 7 mod-tags:2.3.0 2 1024 896 0 768 88 128 mod-authtoken 9 mod-authtoken:2.16.1 2 1440 1152 0 922 88 128 edge-courses 8 edge-courses:1.5.1 2 1024 896 0 768 88 128 mod-notify 7 mod-notify:3.3.0 2 1024 896 0 768 88 128 mod-inventory-update 7 mod-inventory-update:4.0.0 2 1024 896 0 768 88 128 mod-configuration 7 mod-configuration:5.11.0 2 1024 896 0 768 88 128 mod-orders-storage 7 mod-orders-storage:13.8.3 2 1024 896 0 700 88 128 edge-caiasoft 7 edge-caiasoft:2.3.2 2 1024 896 0 768 88 128 mod-login-saml 7 mod-login-saml:2.9.3 2 1024 896 0 768 88 128 mod-erm-usage-harvester 7 mod-erm-usage-harvester:5.0.1 2 1024 896 0 768 88 128 mod-gobi 7 mod-gobi:2.9.0 2 1024 896 0 700 88 128 mod-licenses 7 mod-licenses:6.1.2 2 2480 2312 0 1792 384 512 mod-password-validator 7 mod-password-validator:3.3.0 2 1440 1298 0 768 384 512 edge-dcb 8 edge-dcb:1.2.1 2 1024 896 0 768 88 128 mod-bulk-operations 8 mod-bulk-operations:2.1.8 2 3072 2600 0 1536 384 512 mod-fqm-manager 10 mod-fqm-manager:3.0.7 2 3000 2600 0 768 88 128 mod-graphql 9 mod-graphql:1.13.1 2 1024 896 0 768 88 128 mod-finance 8 mod-finance:5.0.1 2 1024 896 0 700 88 128 mod-erm-usage 7 mod-erm-usage:5.0.0 2 2800 2550 0 1800 384 512 mod-batch-print 7 mod-batch-print:1.2.0 2 1024 896 0 768 88 128 mod-tlr 4 mod-tlr:1.0.0-SNAPSHOT.8 2 1024 896 0 768 88 128 mod-lists 12 mod-lists:3.0.5 2 6000 2600 0 768 88 128 mod-copycat 7 mod-copycat:1.7.0 2 1024 512 0 768 88 128 mod-entities-links 11 mod-entities-links:3.1.3 2 2592 2480 0 1440 0 1024 mod-permissions 13 mod-permissions:6.6.1 2 1684 1544 0 1024 384 512 pub-edge 7 pub-edge:2023.06.14 2 1024 896 0 768 0 0 mod-orders 9 mod-orders:12.9.9 2 2048 1740 0 1024 384 512 edge-patron 8 edge-patron:5.2.1 2 1024 896 0 768 88 128 mod-marc-migrations 26 mod-marc-migrations:1.0.0 2 1024 896 0 768 88 128 edge-ncip 8 edge-ncip:1.10.1 2 1024 896 0 768 88 128 edge-inn-reach 5 edge-inn-reach:3.3.0-SNAPSHOT.69 2 1024 896 0 768 88 128 mod-users-bl 7 mod-users-bl:7.9.3 2 1440 1152 0 922 88 128 mod-oa 4 mod-oa:2.1.0-SNAPSHOT.66 2 1024 896 0 768 88 128 mod-inventory-storage 12 mod-inventory-storage:28.0.4 2 4096 3690 0 3076 512 1024 mod-invoice 8 mod-invoice:5.9.2 2 1440 1152 0 922 88 128 mod-user-import 7 mod-user-import:3.9.0 2 1024 896 0 768 88 128 mod-sender 7 mod-sender:1.13.0 2 1024 896 0 768 88 128 edge-oai-pmh 7 edge-oai-pmh:2.10.0 2 1512 1360 0 1440 384 512 mod-data-export-worker 10 mod-data-export-worker:3.3.6 2 3072 2048 0 2048 384 512 mod-rtac 7 mod-rtac:3.7.0 2 1024 896 0 768 88 128 mod-circulation-storage 8 mod-circulation-storage:17.3.3 2 2880 2592 0 1814 384 512 mod-source-record-storage 13 mod-source-record-storage:5.9.5 2 5600 5000 0 3500 384 512 mod-calendar 7 mod-calendar:3.2.0 2 1024 896 0 768 88 128 mod-event-config 7 mod-event-config:2.8.0 2 1024 896 0 768 88 128 mod-courses 8 mod-courses:1.4.11 2 1024 896 0 768 88 128 mod-circulation-item 7 mod-circulation-item:1.1.0 2 1024 896 0 0 0 0 mod-inventory 9 mod-inventory:21.0.5 2 2880 2592 0 1814 384 512 mod-email 8 mod-email:1.18.1 2 2800 2550 0 1800 384 512 mod-requests-mediated 4 mod-requests-mediated:1.0.0-SNAPSHOT.4 2 1024 896 0 768 88 128 mod-circulation 8 mod-circulation:24.3.8 2 2880 2592 0 1814 384 512 mod-pubsub 8 mod-pubsub:2.15.3 2 1536 1440 0 922 384 512 mod-di-converter-storage 9 mod-di-converter-storage:2.3.1 2 1024 896 0 768 88 128 edge-rtac 7 edge-rtac:2.8.0 2 1024 896 0 768 88 128 edge-orders 7 edge-orders:3.1.0 2 1024 896 0 768 88 128 mod-users 8 mod-users:19.4.5 2 1024 896 0 768 88 128 mod-template-engine 7 mod-template-engine:1.21.0 2 1024 896 0 768 88 128 mod-patron-blocks 7 mod-patron-blocks:1.11.1 2 1024 896 0 768 88 128 mod-audit 8 mod-audit:2.10.2 2 1024 896 0 768 88 128 edge-fqm 9 edge-fqm:3.0.2 2 1024 896 0 768 88 128 mod-source-record-manager 8 mod-source-record-manager:3.9.5 2 5600 5000 0 3500 384 512 nginx-edge 7 nginx-edge:2023.06.14 2 1024 896 0 0 0 0 mod-quick-marc 7 mod-quick-marc:6.0.0 1 2288 2176 0 1664 384 512 nginx-okapi 7 nginx-okapi:2023.06.14 2 1024 896 0 0 0 0 okapi-b 8 okapi:6.1.1 3 1684 1440 0 922 384 512 mod-feesfines 7 mod-feesfines:19.2.1 2 1024 896 0 768 88 128 mod-invoice-storage 7 mod-invoice-storage:5.9.1 2 1872 1536 0 1024 384 512 mod-reading-room 7 mod-reading-room:1.0.0 2 1024 896 0 768 88 128 mod-dcb 8 mod-dcb:1.2.4 2 1024 896 0 768 88 128 mod-service-interaction 7 mod-service-interaction:4.1.1 2 2048 1844 0 1290 384 512 mod-patron 8 mod-patron:6.2.5 2 1024 896 0 768 88 128 mod-data-export 13 mod-data-export:5.1.5 1 2048 1844 0 0 0 0 mod-oai-pmh 7 mod-oai-pmh:3.14.3 2 4096 3690 0 3076 384 512 edge-connexion 7 edge-connexion:1.3.1 2 1024 896 0 768 88 128 mod-notes 7 mod-notes:6.0.0 2 1024 896 0 952 384 512 mod-kb-ebsco-java 8 mod-kb-ebsco-java:5.0.0 2 1024 896 0 768 88 128 mod-organizations-storage 7 mod-organizations-storage:4.8.1 2 1024 896 0 700 88 128 mod-data-export-spring 8 mod-data-export-spring:3.4.3 1 2048 1844 0 1536 384 512 mod-login 7 mod-login:7.12.1 2 1440 1298 0 768 384 512 pub-okapi 7 pub-okapi:2023.06.14 2 1024 896 0 768 0 0 edge-erm 5 edge-erm:1.3.0 2 1024 896 0 768 88 128 mod-eusage-reports 7 mod-eusage-reports:3.0.0 2 1024 896 0 768 88 128

 

Methodology/Approach

  1. Create job profiles srs - holdings and items if needed.

  2. Data Export tests scenarios use the profiles Default instances export job profile and srs - holdings and items

  3. Run sequentially 1k, 100k, 500k on College member tenant using Default instances export job profile.

  4. Run sequentially 1k, 100k, 500k on College member tenant using srs - holdings and items

  5. Run concurrently 500k on central and member tenant.

  6. To get status and time range for export jobs the query used: 

SQL Query
SELECT jsonb->>'jobProfileName' AS jobProfileName, exported as file_size, started_date - completed_date as duration, jsonb->>'status' AS status FROM cs00000int_0001_mod_data_export.job_executions WHERE status = 'COMPLETED' ORDER BY jsonb->>'completed_date' DESC LIMIT 10;

Use this python script to check CSV file with instance UUIDs to be unique. It will check all lines, delete duplicated ones if found and rewrite the file. So it takes not longer than a second to execute it.

Py script - unique UUID checker
import csv def process_uuid_file(file_path): # Initialize a dictionary to count UUIDs uuid_counts = {} # Read the file and count UUID occurrences with open(file_path, 'r') as file: lines = file.readlines() for line in lines: uuid = line.strip().strip('"') # Remove any quotes or extra whitespace if uuid: uuid_counts[uuid] = uuid_counts.get(uuid, 0) + 1 # Count duplicates duplicate_count = sum(count - 1 for count in uuid_counts.values() if count > 1) print(f"Total duplicates found: {duplicate_count}") # Remove duplicates and write back unique UUIDs unique_uuids = list(uuid_counts.keys()) with open(file_path, 'w') as file: for uuid in unique_uuids: file.write(f'"{uuid}"\n') print(f"File has been updated with {len(unique_uuids)} unique UUIDs.") # Example usage file_path = '100k_DE_central.csv' # Replace with your file path process_uuid_file(file_path)