Volltextindizierung großer Daten - Fehlermeldung

Felix777

Neuer Benutzer
Beiträge
4
Ich habe eine große Datenbank lokal bei mir auf meinem Rechner (XAMPP, PHPMyAdmin, MariaDB, 37GB Daten, 450.000 Einträge, Win10 System)
In einer Tabelle habe ich eine Spalte, die ein großes Textfeld ist (mediumtext), dieses möchte ich Volltext durchsuchen. Daher möchte ich dieses Feld
mit dem Attribut "Volltext" belegen. Wenn ich das über PHPMyAdmin mache, fängt der Rechner an zu arbeiten. Und das ganze 4 Tage. Dann bricht er ab mit dem Fehler "Es wurden keine Datenbanken ausgewählt".

Was soll ich tun? Wo kann ich sehen, wie weit meine Indizierung fortgeschritten ist. Warum kommt dieser Fehler auf? Wenn ich jetzt das Feld nochmals mit dem Attribut belege, fängt er von vorne an oder indiziert er weiter?

Ich hoffe, dass es da einen Profi gibt, der mir da gut weiterhelfen kann.
 

Anhänge

  • Screenshot 2022-12-15 174821.png
    Screenshot 2022-12-15 174821.png
    178,7 KB · Aufrufe: 6
Werbung:
Du solltest die Änderung ohne PHPMyAdmin direct im SQL Client vornehmen. Das erhöht die Chance auf ordentliche Fehlermeldungen.
Du kannst im Dictionary abfragen (SQL Statement) welche Indizes bereits definiert sind. Einen halbfertigen Index wird es nicht geben.
Du kannst allgemeine Probleme wie ausreichend Plattenplatz usw. ausschließen.
 
Einen halbfertigen Index wird es nicht geben.
Sag niemals nie. In PG kannst Du Indexe CONCURRENTLY erstellen. Das hat den Vorteil, daß die Tabelle nicht gesperrt ist währen der Erstellung (siehe #1, dauert offenbar 4 Tage + x. Eine exclusiv gesperrte Tabelle wäre fatal in einer produktiven Umgebung.) Damit aber der Index nicht genutzt wird, ist in pg_catalog.pg_index das Feld indisready so lange auf FALSE gesetzt. Der Index ist also 'halbfertig'.
 
im ürbrigen kann man im View pg_stat_progress_create_index sogar verfolgen, wie weit die Indexerstellung fortgeschritten ist. Natürlich nicht mit MySQL...
 
im ürbrigen kann man im View pg_stat_progress_create_index sogar verfolgen, wie weit die Indexerstellung fortgeschritten ist. Natürlich nicht mit MySQL...
Tja, und mit einem aktuellen mysql client geht das auch ohne tools. PhpMyAdmin mal wegwerfen.



Code:
CREATE INDEX i ON tab (num);
Stage: 1 of 2 'copy to tmp table'    46% of stage
 
Werbung:
Nachtrag: All meine Versuche liefen ins leere. Ich habe dann einfach die bestehende DB exportiert. Den Volltext-Key in sekundenschnelle in der leeren DB angelegt und dann wieder die ganze DB importiert. Das hatte dann geklappt und zwar deutlich schneller als nachträglich eine große DB zu indizieren.
 
Zurück
Oben