Die neue Version SQLite 3.45 wurde veröffentlicht, eine leichtgewichtige Datenbank, die als Plug-In-Bibliothek gestaltet ist. Der Code von SQLite wird als Public Domain (öffentlicher Besitz) распространется, das heißt, er kann ohne Einschränkungen und kostenlos für jegliche Zwecke verwendet werden. Die finanzielle Unterstützung für die SQLite-Entwickler wird von einem eigens gegründeten Konsortium bereitgestellt, zu dem Unternehmen wie Bentley, Bloomberg, Expensify und Navigation Data Standard gehören.
Wesentliche Änderungen:
- Alle SQL-Funktionen zur Arbeit mit dem JSON-Format wurden umgeschrieben und auf ein neues internes Parsing-Baumformat JSONB übersetzt, das serialisiert werden kann und in der Datenbank gespeichert wird, um eine erneute Analyse bei der Verwendung von JSON-Werten zu vermeiden. Die neuen Versionen der JSON-bildenden Funktionen generieren jetzt das binäre Format JSONB anstelle des Textformats. In der Funktion json_valid() wurde ein optionales zweites Argument hinzugefügt, über das eine Bitmaske festgelegt werden kann, die die Merkmale eines korrekten JSON definiert (zum Beispiel wird eine Blob JSONB als korrekt angesehen, wenn 0x04 angegeben wird, während 0x01 als korrekten Text JSON im RFC-8259-Format akzeptiert, und 0x05 beide Varianten als korrekt anerkennt).
- In die FTS5-Virtualtabelle, die für die Volltextsuche verwendet wird, wurde die Option tokendata integriert, die die Verwendung eigener Tokenizer ermöglicht.
- Standardmäßig ist die Optimierung SQLITE_DIRECT_OVERFLOW_READ aktiviert, bei der Überlaufseiten, die größer sind als die Standardgröße der B-Baum-Seite, direkt aus der Datei gelesen werden, ohne den Cache zu verwenden. Zum Deaktivieren kann bei der Erstellung die Option „-DSQLITE_DIRECT_OVERFLOW_READ=0“ verwendet werden.
- Im Abfrageplaner wurde die Effizienz der Optimierung transitive Einschränkungen erhöht, und das Ignorieren von Indizes, die als von geringer Qualität angesehen werden, wurde bei der Ausführung der ANALYZE-Operation verbessert.
- In der Kommandozeilenoberfläche wurde die Anzeige von Inhalten in UTF-8-Codierung auf der Windows-Plattform verbessert. Die automatische Erkennung der Verwendung der CLI-Schnittstelle beim Ausführen von „.dump“-Skripten und die entsprechenden Anpassungen in den Einstellungen wie „.dbconfig defensive off“ und „.dbconfig dqs_dll on“ wurden sichergestellt.
- Den auf Anwendungsebene definierten SQL-Funktionen wurde die Eigenschaft SQLITE_RESULT_SUBTYPE hinzugefügt, die es ermöglicht, die Funktion sqlite3_result_subtype() zur Inspektion der Argumentuntertypen aufzurufen.
Zusätzlich kann die Entwicklung des neuen Transaktionsprotokollmodus WAL2 in den experimentellen SQLite-Bauten hervorgehoben werden („PRAGMA journal_mode = wal2“), bei dem zwei WAL-Dateien („database-wal“ und „database-wal2“) anstelle von einer verwendet werden. Beim Schreiben von Daten in die Datenbank werden die neuen Daten in die erste WAL-Datei hinzugefügt. Wenn die erste WAL-Datei eine ausreichend große Größe erreicht, wird auf die zweite Datei umgeschaltet. Nach der Umschaltung auf die zweite WAL-Datei wird die erste für die Festschreibung der Änderungen (Checkpoint) und das Überschreiben zugänglich. Dementsprechend wird bei Erreichung einer großen Größe der zweiten WAL-Datei auf die erste umgeschaltet usw., was das Problem des unkontrollierten Wachstums der WAL-Datei in Situationen löst, in denen Transaktionen lange nicht festgeschrieben oder langwierige Leseprozesse durchgeführt werden.
Quelle: opennet.ru
