I was playing around with some PACS solutions and got interested in Orthanc.
I am now testing Orthanc on Docker with ODBC (MSSQL Server) & Indexer plugin on a decent PC (i7-12700k, 64GB DDR5, 4TB Gen4 NVMe, RTX 3080).
The dicom viewer client requests /studies/%studyId/instances
to get all instances of the selected study to build its structure.
For example, this CBCT image from jaw has 1 study, 2 series with 1306 instances, each series has 653 images with a total size of ~1GB
It executed ~8000 queries against the Database and took ~8 seconds.
Considering this is running on a Perfect LAB environment each roundtrip of query took ~1ms
So if we add network delay in best case 5ms and worst case 30ms we have 40~240 seconds delay. (its common infrastructure design that APP&USERS related servers, DATA&Database servers, and BACKUP servers are separated physically and logically restricted by access)
Also in most RDBMS when we run a query that joins two or more tables we will face Table/Page/Record locks.
So you can imagine if the Indexer or Houskeeper plugin jumps into play with 10 users it’s gonna be a total disaster.
I’m new to Orthanc so definitely, there is a lack of knowledge on my part, Are there any tips and tuning for this any help is much appreciated.