Rechercher

Question
· Juin 10

Yet Another Performance Puzzle

Having been inspired with Shared code execution speed question/discussion, I dare to ask another one which is annoying me and my colleagues for several weeks.

We have a routine called Lib that comprises 200 $$-functions of 1500 code lines total. It was noticed that after calling _any_ function of another rather big routine (1900 functions, 32000 lines) the next call of $$someFunction^Lib(x) is getting 10-20% slower than previous call of the same function. This effect doesn't depend on: 

  • which one specific function is being called between two calls of $$someFunction^Lib(x),
  • which one specific big routine has been chosen as a Big One for this test,
  • whether an "intermediate" function leaves local variables after call,

while it depends on:

  • the number of labels in a big routine: the more, the slower the next call of $$someFunction^Lib(x) is;
  • whether Lib has been written as ObjectScript procedures: in this case the speed difference between the 1st and the 2nd call is smaller.

Have anybody noticed something similar? What is the possible reason of this and how to avoid it? I would be thankful for any thoughts... 

16 Comments
Discussion (16)3
Connectez-vous ou inscrivez-vous pour continuer
Job
· Juin 10

IRIS Data Platform Engineer

What We’re Looking For:
3+ years of experience with InterSystems IRIS, Caché, or Ensemble
Strong skills in ObjectScript, SQL, and scripting languages (Python/Java a plus)
Experience with healthcare interoperability (HL7, FHIR, X12)
Cloud knowledge is a bonus (Azure, AWS, or GCP)
Curious mind + collaborative spirit + bias for action

2 Comments
Discussion (2)1
Connectez-vous ou inscrivez-vous pour continuer
Annonce
· Juin 10

Get Certified at READY 2025

Hi Community,

Are you READY to test your InterSystems technology skills?

Get certified at InterSystems READY 2025! June 22-25,  Hilton Bonnet Creek, Orlando, Florida

Register for a free certification exam attempt at this year's summit (June 22–25)!

Take this opportunity to earn InterSystems highest-level credential in one of eight areas.

  • 👏 Get formal recognition of your skills and experience.
  • 🚀 Boost your confidence...and your career!

Sign up soon—space is limited!

Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer
Article
· Juin 10 11m de lecture

Statistiques SQL avec Grafana, InfluxDB et Telegraf

Introduction

Les performances des bases de données sont devenues essentielles à la réussite des environnements applicatifs modernes. Il est donc indispensable d'identifier et d'optimiser les requêtes SQL les plus exigeantes en ressources afin de garantir une expérience utilisateur fluide et la stabilité des applications. 

Cet article présente une approche rapide pour analyser les statistiques d'exécution des requêtes SQL sur une instance InterSystems IRIS afin d'identifier les domaines à optimiser au sein d'une macro-application.

Au lieu de nous concentrer sur la surveillance en temps réel, nous allons mettre en place un système qui collecte et analyse les statistiques précalculées par IRIS une fois par heure.  Cette approche, bien qu'elle ne permette pas de surveillance instantanée, offre un excellent compromis entre la richesse des données disponibles et la simplicité de mise en œuvre. 

Nous utiliserons Grafana pour la visualisation et l'analyse des données, InfluxDB pour le stockage des séries chronologiques et Telegraf pour la collecte des métriques.  Ces outils, reconnus pour leur puissance et leur flexibilité, nous permettront d'obtenir un aperçu clair et exploitable.

Plus précisément, nous détaillerons la configuration de Telegraf pour récupérer les statistiques. Nous configurerons également l'intégration avec InfluxDB pour le stockage et l'analyse des données, et créerons des tableaux de bord personnalisés dans Grafana. Cela nous aidera à identifier rapidement les requêtes nécessitant une attention particulière.

Pour faciliter l'orchestration et le déploiement de ces différents composants, nous utiliserons Docker.

logos.png

Discussion (0)2
Connectez-vous ou inscrivez-vous pour continuer
Question
· Juin 10

Question about database defragmentation (several TB database)

I have a database that is 2TB in size (from a LIVE system).

I would like to defragment it but I have some questions. I took a look at official documentation but it does not help.

  • Is is possible to get a measurement about how much database is fragmented ? (eg: a percentage). Most operating systems are able to give a an indication about how much a filesystem is fragmented before any operation.
  • The database is on a LIVE server, the IRIS service is restarted every night (around 1AM). Because of that I can't run defragment continuously. I don't think it will be able to complete under 24 hours. If IRIS service is stopped while defragment is running, will it handle it properly or should defragment be stopped before ?
  • If defragmentation is run once, then stopped, then run again and so on, will there any progress made over the time ? (thus achieving a good defragmentation at some point).

InterSystems recommends do to run the defragmentation outside peak hours.
Based on what is written above, does it make sense to run defrag every night (eg: during 1AM - 6AM, outside peak hours) for several days ? 

10 Comments
Discussion (10)2
Connectez-vous ou inscrivez-vous pour continuer