Table Viewer

Browse, filter and edit table data directly

Open a table, filter it, sort it, edit cells in place and see IRIS-specific details other tools never show you.

  • Spalten, Constraints, Indizes, Storage und IRIS-Extent
  • Filterverlauf je Tabelle gemerkt
  • Constraints verifiziert, bevor sie aktiviert werden
  • Storage-Namen als Anker zum Global Browser

Der Table Viewer ist das, was man sieht, wenn man im Server Navigator auf eine Tabelle klickt. Er zeigt alles, was die Datenbank über diese Tabelle kennt — Spalten, Constraints, Indizes, Größen, Storage, Foreign Keys — und er tut es auf einer einzigen Seite, nicht aufgeteilt über ein Dutzend Dialoge. Filtern geht aus dem Kontextmenü, sortieren mit einem Klick auf den Spaltenkopf, und aus den gefundenen Zeilen wird mit zwei Klicks das SQL-Statement, das sie korrigiert.

Table Viewer mit dem Data-Tab ausgewählt, zeigt Zeilen einer Tabelle in einem sortierbaren, filterbaren Grid mit dem Filterfeld-Dropdown geöffnet, das zuletzt auf dieser Tabelle verwendete Filter anbietet
Data, Structure, Constraints, Indexes, Storage — alles auf einer Seite.

Data: Browsen, Filtern — und warum Bearbeiten SQL heißt

Das Data-Tab zeigt die Zeilen der Tabelle in einem sortierbaren, filterbaren Grid, mit Paginierung, wenn die Tabelle groß ist. Jede Spalte kann gefiltert werden, indem man in das Filter-Textfeld darunter tippt, und das Grid aktualisiert sich, während man tippt. Seit 4.02 merkt sich dieses Filterfeld die zuletzt auf dieser Tabelle verwendeten Filter und bietet sie als Dropdown an — neueste zuerst, Dubletten zusammengefasst —, sodass ein vor Wochen getippter Filter einen Klick entfernt ist statt aus dem Gedächtnis neu getippt zu werden, auch über einen Neustart hinweg. Sortieren passiert mit einem Klick auf den Spalten-Header.

Kein Grid in SQL DATA LENS nimmt einen getippten Wert entgegen. Der Schalter editable auf dem Data-Tab macht aus der Abfrage ein aktualisierbares Result Set und schaltet Add, Remove, Commit und Rollback frei — das macht Zellen aber nicht eintippbar, der Schalter ist für die Add/Remove/Commit-Mechanik da, nicht zum Bearbeiten eines Werts an Ort und Stelle. Um einen Wert zu ändern, wählen Sie die Zeile aus und nutzen im Kontextmenü des Grids Copy as ▸ SQL Update: Es baut das Statement, geschlüsselt auf den Primärschlüssel, und Sie passen es an und führen es im SQL-Editor aus — zwei Klicks und eine Wertänderung statt eines von Hand geschriebenen UPDATE mit einer WHERE-Klausel, die exakt stimmen muss.

Structure: Spalten, Datentypen, Nullability, Defaults

Das Structure-Tab listet jede Spalte mit ihrem Datentyp, ob sie NULL akzeptiert, ihrem Default-Wert (wenn vorhanden), ob sie berechnet ist, und ob sie Teil des Primärschlüssels ist. Das ist die DDL der Tabelle, lesbar als Tabelle selbst, sodass man sie filtern, sortieren und nach Excel exportieren kann, genau wie Daten.

Spaltenreihenfolge wird beibehalten, wie die Datenbank sie definiert, was manchmal wichtig ist: Einige Systeme speichern Zeilen in der Reihenfolge der Spalten, und das Verständnis der Reihenfolge kann erklären, warum eine Tabelle größer ist als erwartet. Das ist hauptsächlich ein Problem für Column-Store-Datenbanken und für Datenbanken, die Spaltenkompression verwenden, aber es ist wert zu wissen, wenn man Tabellengröße untersucht.

Table Viewer mit dem Structure-Tab ausgewählt, zeigt eine Liste von Spalten mit ihren Datentypen, Nullability, Default-Werten und Primary-Key-Status
Spalten als lesbare Liste, nicht als DDL-Statement.

Constraints: Foreign Keys, Checks, Uniqueness

Das Constraints-Tab listet alle Constraints, die auf der Tabelle definiert sind — Foreign Keys, Check Constraints, Unique Constraints und Not-Null-Constraints. Jede Zeile benennt den Constraint-Typ, die Spalten, die er betrifft, und ob der Constraint aktiviert oder deaktiviert ist.

Für Foreign Keys zeigt das Tab die referenzierte Tabelle und die referenzierten Spalten, sodass man sofort sehen kann, wohin der Schlüssel zeigt, ohne die DDL zu lesen. Das ist nützlich, wenn man Joins zwischen Tabellen schreibt: Man sieht die Foreign Keys, und die Joins schreiben sich fast selbst.

Das Bemerkenswerteste an der Constraints-Ansicht ist, dass sie Constraints verifiziert, bevor sie aktiviert werden. Wenn man versucht, einen Foreign Key Constraint auf einer Tabelle zu aktivieren, die Zeilen hat, die die Regel verletzen, wird IRIS den Constraint ablehnen, und die Fehlermeldung wird die verletzenden Zeilen nicht benennen. SQL DATA LENS läuft zuerst eine Verifikations-Abfrage, zeigt die Zeilen, die fehlschlagen würden, und lässt Sie entscheiden, ob Sie die Zeilen bereinigen, den Constraint ändern oder den Versuch abbrechen.

Indexes: Was verwendet wird und was nicht

Das Indexes-Tab listet jeden Index auf der Tabelle, mit seinem Typ (Clustered, Non-Clustered, Unique, Bitmap), den Spalten, die er abdeckt, seiner Größe und wann er zuletzt verwendet wurde. Das letzte ist am nützlichsten: Ein Index, der seit sechs Monaten nicht verwendet wurde, ist Aufwand ohne Gewinn, und das sollte entweder erklärt werden können oder der Index sollte gelöscht werden.

Die Größenspaltung vergleicht die Index-Größe mit der Tabellengröße, sodass große Indizes oben sortiert werden. Ein Index, der größer ist als die Tabelle selbst, ist nicht unbedingt ein Fehler — Bitmap-Indizes sind oft größer als die Daten, die sie indizieren — aber es ist beachtenswert. Die meisten Tabellen sollten Indizes haben, die kleiner sind als die Daten.

Storage: Wie die Tabelle auf der Festplatte liegt

Das Storage-Tab, spezifisch für IRIS und Caché, zeigt die Globals, in denen eine Tabelle und ihre Indizes tatsächlich gespeichert sind, zusammen mit deren Größen. Das ist der Anker zwischen der SQL-Tabelle und der Global-Speicherstruktur darunter: Man sieht eine Tabelle, die 14 GB groß ist, geht zum Storage-Tab, sieht den Global-Namen, und klickt, um diesen Global im Global Browser zu öffnen.

Die View zerlegt auch, wie viel von der Tabellengröße von den Daten kommt und wie viel von den Indizes kommt. Eine Tabelle, deren Indizes größer sind als die Daten, ist meist eine Geschichte über redundante Indizes, und das ist eine Frage für die Performance-Tools.

Table Viewer mit dem Storage-Tab ausgewählt, zeigt eine Liste von Globals, die eine Tabelle speichern, jede Zeile mit dem Global-Namen, Typ (Data oder Index), und Größe
Von der Tabelle zum Global. Der Global-Name ist ein anklickbarer Anker.

IRIS Extent: Die Extent-Größe und Objekt-ID

Für IRIS und Caché ist es auch ein Extent-Tab, das die Extent-ID der Tabelle, ihre aktuelle Größe (wie viele Objekte), ihre zugewiesene Größe und das Datum der letzten Änderung zeigt. Das ist hauptsächlich nützlich, um zu verifizieren, dass die Extent-Größe mit der erwarteten Zeilenanzahl übereinstimmt — ein Unterschied bedeutet oft, dass Objekte über die Objektschicht geschrieben wurden, aber nicht über SQL freigelegt wurden, oder umgekehrt.

Foreign Keys als anklickbare Anker

Wann immer ein Foreign Key aufgelistet wird, ist die referenzierte Tabelle ein anklickbarer Anker. Klicken Sie, und das Tool öffnet diese Tabelle im Table Viewer. Das ist die gleiche Idee wie die Beziehungslinien im Navigator: Foreign Keys sind Anker, nicht nur Metadaten, also sollten sie sich wie Anker verhalten.

Ein Klick zur Klasse und zu den Globals

Auch der Klassenname und die Global-Namen sind Anker, nicht bloß Beschriftungen. Der Klassenname einer Tabelle öffnet die Klasse im Class Viewer, die Global-Namen im Storage-Reiter springen direkt in den Global Browser zum richtigen Global. Dieselben beiden Aktionen stehen im Kontextmenü der Tabelle als Open class und Open global(s) — daneben Where is this used?, das den Klassen- und Routinenquelltext des Namespace durchsucht. Auf IRIS und Caché ist der Weg vom SQL-Namen hinunter zu dem, was die Zeilen tatsächlich speichert — und hinaus zu allem, was es sonst noch anfasst — jeweils ein Klick statt einer Suche.

Reagibel bleiben, auch nach langer Leerlaufzeit

Seit 4.02 erkennen die Detail-Tabs eine Verbindung, die der Server still abgeräumt hat — nach einer langen Leerlaufzeit, einem Serverneustart oder einer verlorenen Netzwerkverbindung —, und bauen sie neu auf, statt auf einer nur scheinbar lebendigen Verbindung zu scheitern: das betrifft das Laden von Spaltenmetadaten, Constraints, Triggern, einer Spaltenbeschreibung und das Committen bearbeiteter Grid-Zeilen. Auch die Tabellen- und View-Aktionen — ein CREATE-, INSERT-, SELECT-, UPDATE- oder DROP-with-Dependencies-Skript erzeugen, Tabellen exportieren sowie auf IRIS und Caché „Create mapped table" und „Edit table description" — frieren das Fenster dabei nicht mehr ein, ebenso wenig wie das Speichern eines Triggers.

Der Table Viewer ist in jeder Edition verfügbar, einschließlich der Free Edition. Laden Sie SQL DATA LENS herunter und filtern Sie Ihre größte Tabelle nach dem Wert, den Sie zuletzt gesucht haben — er steht schon im Dropdown.

Explore your IRIS data from SQL down to globals

Download, unzip, connect. Your first namespace is on screen in about three minutes.

Windows 10, 11 and Windows Server (64-bit) · ~130 MB · version 4.02 · full 30-day Pro trial included