Deep Dive
Was "optimiert für InterSystems IRIS" konkret bedeutet
Jedes Datenbank-Tool behauptet, InterSystems IRIS zu unterstützen. Diese Seite ist die spezifische Version dieser Behauptung: die Informationen, die SQL DATA LENS anzeigt, weil es weiß, was IRIS ist, und die ein generischer JDBC-Client nicht abfragen kann.
InterSystems IRIS führt ein integriertes Datenwörterbuch, das über mehrere Datenmodelle gleichzeitig erreichbar ist. Dieselbe Information kann eine Tabelle, ein Objekt, ein mehrdimensionales Array oder ein Dokument sein. Darunter liegen die Daten in spärlich belegten, baumartig strukturierten mehrdimensionalen Arrays namens Globals — und Globals sind das, was die SQL- und Objektschnittstellen schnell macht und was dynamische Typen wie XML und JSON unkompliziert speicherbar macht.
Ein JDBC-Treiber exponiert die SQL-Projektion dieses Modells und hört dort
auf. Das ist eine völlig gute Sicht zum Schreiben eines
SELECT. Es reicht nicht, wenn Sie wissen müssen, warum das
SELECT langsam ist, was der Optimierer über Ihre Daten glaubt
oder was in einer Spalte tatsächlich gespeichert ist, die SQL als String
meldet.
Tabellenstatistiken: Was der Optimierer zu wissen glaubt
IRIS und Caché untersuchen regelmäßig Tabellendaten und sammeln Statistiken in einer Operation namens Tune Table. Diese Statistiken entscheiden über den Query-Plan, also sind sie bei plötzlich langsamen Abfragen einer der ersten Orte, an denen man nachsieht. SQL DATA LENS zeigt sie in der Tabellenansicht, anstatt Sie von Hand Systemtabellen abfragen zu lassen:
- Extent-Größe — die Anzahl der Zeilen, von der IRIS glaubt,
dass die Tabelle sie enthält. Nützlich zu wissen, weil
SELECT COUNT(*)auf einer Tabelle mit mehreren hundert Millionen Zeilen kein praktikabler Weg ist, dieselbe Frage zu beantworten. - Tabellen- und Indexgrößen — wo der Speicher tatsächlich liegt und wie groß jeder Index geworden ist.
- Der exakte Klassenname hinter der Tabelle im Multimodell-Wörterbuch. Jede SQL-Tabelle in IRIS ist auch eine Klasse, und sobald Sie sich den Speicher ansehen oder die Klassendefinition lesen müssen, brauchen Sie ihren echten Namen.

Selektivität und warum der Ausreißer mehr zählt
Jede Spalte in einer IRIS-Tabelle trägt einen Selektivitätswert:
den Anteil der Zeilen, den eine Abfrage zurückgeben würde, wenn sie nach
einem typischen Wert in dieser Spalte sucht. Er wird als 1/D
berechnet, wobei D die Anzahl der unterschiedlichen Werte ist.
Eine Spalte mit einer Selektivität nahe 1 ist als Index nutzlos; eine Spalte
nahe 0 ist ausgezeichnet.
Die interessanteren Zahlen liegen eine Ebene tiefer, im Tab
IRIS Column Info: outlier_selectivity,
outlier_value und average_field_size. Ein Ausreißer
ist der klassische Grund dafür, dass eine Abfrage für die meisten Eingaben
schnell und für eine pathologisch langsam ist — eine Status-Spalte, in der 98
% der Zeilen COMPLETE sagen, zum Beispiel. Der Optimierer weiß
das. Ohne ein Tool, das es Ihnen zeigt, wissen Sie es nicht.

Indizes und Storage: die Globals hinter der Tabelle
Die Tabs IRIS Indexes und IRIS Storage zeigen die internen Global-Namen, Struktur und Größen, die eine Tabelle unterstützen. Das ist die Brücke zwischen der SQL-Welt und der physischen: Sie sehen, welches Global die Daten hält, welche Globals die Indizes halten und wie viel Platz jedes verbraucht — und können dann den Global Browser öffnen und hineinsehen.

Lesen, was Globals tatsächlich enthalten
IRIS und Caché speichern Datenelemente in einer kompakten binären
Darstellung, die von der $LISTBUILD-Funktionsfamilie erstellt
wird. Lesen Sie ein Global mit einem generischen Tool und Sie erhalten einen
Wert, der wie Leitungsrauschen aussieht. Der
Global Browser dekodiert es in
einzelne Elemente, läuft Subscript-Ebenen entlang und meldet gemischte
Datentypen und ungültige Listenformate, anstatt daran zu scheitern.
Das ist die klarste Illustration des Unterschieds. Zwei Tools verbinden sich mit derselben Datenbank; eines zeigt Ihnen eine Zeichenkette von Steuerzeichen, das andere zeigt Ihnen die Felder.
Und die Verbindung selbst
Optimierung bedeutet auch, die Geschichte der Plattform nicht zu Ihrem Problem zu machen. 8 InterSystems-Treiber sind in der Anwendung enthalten — 7 IRIS-Versionen von 3.3 to 3.10.5 plus Caché 2018.1 — jede in einem isolierten Classloader geladen. Ein Caché-2018-Server und eine aktuelle IRIS-Instanz können in einer Sitzung nebeneinander geöffnet sein, was während einer Migration sehr wichtig ist und in einem generischen Client tatsächlich umständlich zu arrangieren ist.
Namespaces werden für Sie aufgelistet, anstatt von Ihnen konfiguriert zu werden: Verbinden Sie sich mit einem Server und jeder Namespace erscheint im Baum, ohne ihre Namen zu kennen und ohne eine separate JDBC-URL für jeden.
Sehen Sie sich Ihre eigenen Statistiken an
Installieren Sie es, öffnen Sie die Tabelle, die Sie beschäftigt hat, und lesen Sie die Zahlen, die der Optimierer verwendet. Das dauert normalerweise weniger als fünf Minuten.
Windows 10, 11 and Windows Server (64-bit) · ~140 MB · Version 3.24 · volle 30-Tage-Pro-Trial enthalten