perf: optimize CI/release caching and catalog, views, NextUp, Latest & search queries #5
Loading…
Reference in a new issue
No description provided.
Delete branch "perf/nextgen-catalog-and-ci"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Zusammenfassung
Dieser PR setzt die vollständige CI/Release- und Katalog-/Such-/Datenbank-Performance-Optimierung aus
docs/architecture-and-performance-analysis.mdin 5 logisch getrennten Commits um:docs: add architecture, CI/release and catalog performance analysis(bfaa03a)docs/architecture-and-performance-analysis.md.perf(build): enable thin LTO, normalize archive mtimes and share Harbor BuildKit cache(a8a949d)lto = "thin"undcodegen-units = 8im[profile.release]statt monolithischem Fat-LTO (codegen-units = 1).scripts/normalize-source-timestamps.shsetzt Dateizeitstempel deterministisch vor Test- und Image-Builds zurück, damittar.gz-Checkouts in Forgejo keine unnötigen Recompiles auslösen.harbor.wuastbude.de/rustfin/rustfin:buildcache) zwischen PR-docker-buildundrelease.yaml.perf(catalog): optimize item selection trees, Latest TV and Views summaries(9628873)selection_tree-CTEs und Index-blockierendeOR-Prädikate bei Library-Roots und Ordner-Scopes initem_selection.O(N^2)-Subquery inlatest_tv.rsdurch dedupliziertelatest_tv_parents+DISTINCT ON(latest_tv_series) +LEFT JOIN./Viewsund/UserViewsdas Laden aller ~20.000MusicArtist-Einträge ausnamed_itemssowie unnötige Episoden-Subtree-Scans bei nicht-rekursiven Folder-Summaries.perf(shows): use projected query metadata and scope NextUp discovery(a1f2e11)Video3DFormat,VideoTypeundIsoTypeinPredicateSourceName, sodassread_scopedinshows/catalog.rsdie 80-Byte-Spaltequery_metadatastatt des ~96 MB großenmetadata-JSONB-TOAST-Felds liest.NextUpbricht bei leerer Wiedergabehistorie sofort ab, übergibtnextUpDateCutoffbereits an die SQL-Serienermittlung (started_series) und liest invideo_versions/groups.rszuerst die schlanken Versionskanten-Tabellen statt allemedia_itemsvorab zu scannen.perf(search): reuse matched named IDs and avoid duplicate candidate scans(35380f9)matching_ids(Catalog::Named)pro Suche nur noch einmal statt 4× über alle 65.586named_itemsaus und nutzt die gefundenennamed_idsdirekt füritem_named_relations,artist_presentationsundsearch_named_metadata.composition_ids-/accepted_ids-Abfragen ohne Datenbank-Roundtrip.Verifikation
just gate(architecture,fmt-check,clippy,testinkl.schema-check,deny,machete) vollständig grün durchgelaufen.node --test scripts/docker-build.test.mjsgrün.