SQLite

Screenshot Software:
SQLite
Szczegóły programowe:
Wersja: 3.24.0 Aktualizowane
Filmu: 22 Jun 18
Wywoływacz: D. Richard Hipp
Licencja: Wolny
Popularność: 21

Rating: 5.0/5 (Total Votes: 1)

SQLite to otwarta, wieloplatformowa, bezpłatna i mała biblioteka C, która implementuje samodzielny, wbudowany, transakcyjny, bezserwerowy i zerowej konfiguracji silnik bazy danych SQL. Jest to najczęściej używany silnik baz danych SQL na świecie.


Funkcje na pierwszy rzut oka

Najważniejsze funkcje obejmują obsługę izolowanych, atomowych, trwałych i spójnych transakcji, implementację SQL92, pliki bazy danych mogą być swobodnie dzielone między komputerami, obsługuje bazy danych do 2 terabajtów, obsługa bloków i łańcuchów wielkości gigabajtów, mały ślad kodu, jak oraz łatwy w obsłudze i bardzo prosty interfejs API (Application Programming Interface).

Dodatkowo, SQLite nie wymaga wstępnej konfiguracji ani dalszej administracji, umożliwia programistom przechowywanie kompletnej bazy danych w jednym, wieloplatformowym pliku na dysku, który jest idealny do używania formatów plików aplikacji, nie ma zewnętrznych zależności, jest dostarczany z wbudowanymi w powiązaniach TCL (Tool Command Language) i obszernej dokumentacji.

Wiązania dla wielu innych języków programowania są dostępne osobno. Jego kod źródłowy jest dobrze skomentowany i jest dostarczany z autonomicznym klientem CLI (Command-line Interface), który został zaprojektowany z offsetu do użycia przy administrowaniu bazami danych SQLite.


Do czego mogę go użyć?

Silnik bazy danych SQLite może być używany do dowolnego celu, osobistego lub komercyjnego. Sugerowane zastosowania bazy danych SQLite obejmują bazę danych gadżetów, bazę danych witryn, stand-by dla korporacyjnego RDBMS (Relational Database Management System), a także format pliku aplikacji.


Pod maską i obsługiwanymi systemami operacyjnymi

Dystrybucja SQLite jest dostarczana z autonomicznym programem dostępu do wiersza poleceń (sqlite), który może być używany do administrowania bazą danych SQLite i który służy za przykład korzystania z biblioteki SQLite. Jest napisany w całości w języku programowania ANSI-C.

Obsługiwane systemy operacyjne to GNU / Linux, Mac OS X i Microsoft Windows. Obsługiwane systemy operacyjne obejmują systemy Android i iOS. Został pomyślnie przetestowany na 32-bitowych i 64-bitowych platformach sprzętowych i jest łatwy do przenoszenia na inne systemy operacyjne.

Co nowego w tej wersji:

  • Najważniejsze cechy tej wersji to obsługa UPSERT w stylu PostgreSQL i lepsza wydajność, szczególnie w przypadku zapytań typu ORDER BY LIMIT.

Co nowego w wersji:

  • Korzystaj z możliwości zapisu atomowego w systemie plików F2FS, jeśli są dostępne, w celu uzyskania znacznie mniejszego nakładu pracy związanej z transakcjami. To wymaga obecnie opcji kompilacji SQLITE_ENABLE_BATCH_ATOMIC_WRITE.
  • Pozwól, aby polecenia ATTACH i DETACH działały wewnątrz transakcji.
  • Zezwalaj na zapisywanie wirtualnych tabel BEZ ROWID, jeśli KLUCZ GŁÓWNY zawiera dokładnie jedną kolumnę.
  • "fsync ()" która występuje po tym, jak nagłówek został zapisany w resetowaniu WAL, teraz używa ustawień synchronizacji dla punktów kontrolnych. Oznacza to, że użyje on opcji "fullfsync" na Macu, jeśli włączono PRAGMA checkpoint_fullfsync.
  • Funkcja sqlite3_sourceid () próbuje wykryć, czy kod źródłowy został zmodyfikowany z tego, co jest zaznaczone w kontroli wersji, a jeśli istnieją modyfikacje, cztery ostatnie znaki skrótu wersji są wyświetlane jako "alt1". lub "alt2". Celem jest wykrycie przypadkowych i / lub nieostrożnych zmian. Fałszywa może obalić tę funkcję.
  • Ulepszono de-cytowanie nazw kolumn dla instrukcji CREATE TABLE AS z zapytaniem zbiorczym po prawej stronie.
  • Mniej "stat ()" wywołania systemowe wydawane przez unix VFS.
  • Poprawiono optymalizację LIKE tak, aby działała z klauzulą ​​ESCAPE.
  • Ulepszono PRAGMA integrity_check i PRAGMA quick_check, aby wykryć niejasne uszkodzenie wiersza, którego wcześniej brakowało. Zaktualizuj także oba pragmy, aby zwracały tekst błędu, a nie SQLITE_CORRUPT w przypadku napotkania uszkodzenia w rekordach.
  • Planista zapytań woli teraz zaimplementować podkwerendy z klauzul FROM przy użyciu współprogramów, a raczej przy użyciu optymalizacji spłaszczania zapytań. Wsparcie dla współprogramów dla podkwerend nie może być dłużej wyłączone.
  • Przekaż informacje o ograniczeniach! =, IS, IS NOT, NOT NULL i IS NULL do metody xBestIndex dla wirtualnych tabel.
  • Poprawiono wirtualną tabelę CSV, aby akceptowała ostatni wiersz danych wejściowych, jeśli brakuje ostatecznego znaku nowej linii.
  • Usuń rzadko używane "zera" alokator pamięci. Zastąp go konfiguracją SQLITE_CONFIG_SMALL_MALLOC, która daje SQLite wskazówkę, że należy w miarę możliwości unikać dużych przydziałów pamięci.
  • Dodano wirtualną tabelę roju do istniejącego rozszerzenia tabeli wirtualnej.
  • Dodano wirtualną tabelę sqlite_dbpage zapewniającą bezpośredni dostęp do stron pliku bazy danych. Kod źródłowy jest wbudowany w połączenie i jest aktywowany przy użyciu opcji -DSQLITE_ENABLE_DBPAGE_VTAB podczas kompilacji.
  • Dodaj nowy typ wirtualnej tabeli fts5vocab - "instancja". - zapewnia bezpośredni dostęp do indeksu pełnotekstowego FTS5 na najniższym możliwym poziomie.
  • Usuń wywołanie funkcji rand_s () w systemie Windows VFS, ponieważ powodowało problemy w Firefoksie na niektórych starszych laptopach.
  • Kod źródłowy src / shell.c w powłoce wiersza poleceń nie jest już objęty kontrolą wersji. Ten plik jest teraz generowany jako część procesu kompilacji.
  • Różne mikrooptymalizacje zmniejszają użycie procesora o około 2,1%.
  • Poprawki:
  • Napraw błędną instrukcję assert () wykrytą przez OSSFuzz. Bilet cb91bf4290c211d
  • Naprawić niejawny wyciek pamięci w sqlite3_result_pointer (). Bilet 7486aa54b968e9b
  • Unikaj potencjalnego błędu "wykorzystaj po zwolnieniu", odraczając reset schematu do momentu zakończenia działania terminarza zapytań. Bilet be436a7f4587ce5
  • Używaj tylko indeksów wyrażeń, aby zoptymalizować ORDER BY lub GROUP BY, jeśli wartość COLLATE jest prawidłowa. Bilet e20dd54ab0e4383
  • Napraw błąd twierdzenia, który pojawiał się, gdy wyrażenie w wyrażeniu indeksu jest naprawdę stałe. Bilet aa98619ad08ddca
  • Napraw błąd asercji, który może wystąpić po PRAGMA reverse_unordered_selects. Bilet cb91bf4290c211d
  • Naprawienie błędu, który może wystąpić w przypadku kwerend używających funkcji o wartości tabelarycznej w podzapytaniu IN lub EXISTS. Bilet b899b6042f97f5
  • Napraw problem z potencjalnym przepełnieniem liczby całkowitej podczas kompilowania określonego horrendalnego wspólnego wyrażenia tabelowego. To był kolejny problem wykryty przez OSSFuzz. Odprawa 6ee8cb6ae5.
  • Napraw potencjalną niezgodność odczytu podczas wysyłania zapytań do uszkodzonego pliku bazy danych, problem wykryty przez Natalie Silvanovich z Google Project Zero. Odprawa 04925dee41a21f.

Co nowego w wersji 3.20.1:

  • Wersja łatki w wersji 3.20.1 zmienia dwa wiersze kodu w interfejsie sqlite3_result_pointer () w celu naprawienia rzadkiego wycieku pamięci.

Co nowego w wersji 3.9.2:

  • Wersja SQLite 3.9.2 to wydanie poprawki naprawiające dwa niejasne błędy.

Co nowego w wersji 3.8.9:

  • Nowe funkcje w tej wersji obejmują komendę PRAGMA index_xinfo, interfejs sqlite3_status64 () i polecenie ".dbinfo" powłoki linii poleceń.

Co nowego w wersji 3.8.8.2:

  • Poprawka łatki 3.8.8.2 rozwiązuje jeden drobny problem: gwarantuje, że operacja sqlite3_wal_checkpoint (TRUNCATE) zawsze obcina logi zapisu z wyprzedzeniem, nawet jeśli dziennik został już zresetowany i nie zawierał żadnej nowej treści. Nie jest jasne, czy jest to poprawka czy nowa funkcja.
  • Coś takiego mogłoby normalnie przejść do następnego, regularnie planowanego wydania, ale wybitny użytkownik SQLite potrzebował zmiany w pośpiechu, więc byliśmy szczęśliwi mogąc rzucić to przez tę poprawkę.
  • Nie ma powodu do aktualizacji, chyba że rzeczywiście potrzebujesz ulepszonego zachowania sqlite3_wal_checkpoint (TRUNCATE).

Co nowego w wersji 3.8.8.1:

  • Napraw błąd w logice sortowania, obecny od wersji 3.8.4, który może spowodować, że dane wyjściowe będą wyświetlane w niewłaściwej kolejności w zapytaniach zawierających klauzulę ORDER BY, klauzulę LIMIT i które mają około 60 lub więcej kolumn w zestaw wyników. Bilet f97c4637102a3ae72b79.
  • SQLITE_SOURCE_ID: "2015-01-20 16:51:25 f73337e3e289915a76ca96e7a05a1a8d4e890d55"
  • SHA1 dla sqlite3.c: 33987fb50dcc09f1429a653d6b47672f5a96f19e

Co nowego w wersji 3.8.8:

  • Nowe funkcje:
  • Dodano polecenie PRAGMA data_version, które może być użyte do ustalenia, czy plik bazy danych został zmodyfikowany przez inny proces.
  • Dodano opcję SQLITE_CHECKPOINT_TRUNCATE do interfejsu sqlite3_wal_checkpoint_v2 () z odpowiednimi ulepszeniami do PRAGMA wal_checkpoint.
  • Dodano interfejs sqlite3_stmt_scanstatus (), dostępny tylko po skompilowaniu z SQLITE_ENABLE_STMT_SCANSTATUS.
  • Funkcja sqlite3_table_column_metadata () została ulepszona do poprawnego działania w przypadku tabel BEZ ROWID oraz do sprawdzania istnienia tabeli, jeśli parametr nazwy kolumny ma wartość NULL. Interfejs jest teraz domyślnie uwzględniony w kompilacji, bez potrzeby korzystania z opcji kompilacji SQLITE_ENABLE_COLUMN_METADATA.
  • Dodano opcję kompilacji SQLITE_ENABLE_API_ARMOR.
  • Dodano opcję kompilacji SQLITE_REVERSE_UNORDERED_SELECTS.
  • Dodano opcję czasu kompilacji SQLITE_SORTER_PMASZ i opcję czasu początkowego SQLITE_CONFIG_PMASZ.
  • Dodano opcję SQLITE_CONFIG_PCACHE_HDRSZ do sqlite3_config (), która ułatwia aplikacjom określenie odpowiedniej ilości pamięci do użycia z SQLITE_CONFIG_PAGECACHE.
  • Liczba wierszy w klauzuli VALUES nie jest już ograniczona przez SQLITE_LIMIT_COMPOUND_SELECT.
  • Dodano ładowalne rozszerzenie eval.c, które implementuje funkcję eval () SQL, która rekursywnie oceni SQL.
  • Usprawnienia wydajności:
  • Zmniejsz liczbę operacji memcpy () związanych z równoważeniem drzewa b, aby zwiększyć ogólną wydajność o 3,2%.
  • Ulepszenia szacunków kosztowych dla optymalizacji przeskakiwania.
  • Automatyczna optymalizacja indeksowania jest teraz w stanie wygenerować częściowy indeks, jeśli jest to odpowiednie.
  • Poprawki:
  • Zapewnij trwałość po utracie zasilania za pomocą "PRAGMA journal_mode = TRUNCATE", wywołując fsync () zaraz po obcięciu pliku kroniki.
  • Planista zapytań rozpoznaje teraz, że dowolna kolumna w prawej tabeli LEWEGO DOŁĄCZENIA może mieć wartość NULL, nawet jeśli ta kolumna ma ograniczenie NOT NULL. Unikaj prób optymalizacji testów NULL w tych przypadkach. Napraw bilet 6f2222d550f5b0ee7ed.
  • Upewnij się, że ORDER BY ustawia wiersze w kolejności rosnącej, nawet jeśli operator DISTINCT jest zaimplementowany przy użyciu indeksu malejącego. Naprawiono bilet c5ea805691bfc4204b1cb9e.
  • Naprawianie wyścigów danych, które mogą występować pod wpływem stresu podczas pracy z wieloma wątkami w trybie współużytkowanej pamięci podręcznej, w których niektóre wątki otwierają i zamykają połączenia.
  • Naprawiono ukryte błędy błędów znalezione przez amerykańskiego fuzzy lop. Bilet a59ae93ee990a55.
  • Pracuj nad błędem optymalizatora GCC (dla gcc 4.2.1 na MacOS 10.7), który spowodował, że rozszerzenie R-Tree wylicza niepoprawne wyniki po kompilacji z opcją -O3.
  • Inne zmiany:
  • Wyłącz użycie procedury biblioteki C strchrnul (), o ile nie zostało to wyraźnie włączone przy użyciu opcji -DHAVE_STRCHRNULL podczas kompilacji.
  • Ulepszenia skuteczności i dokładności prawdopodobieństwa (), prawdopodobnego () i mało prawdopodobnego () funkcji podpowiedzi SQL.
  • SQLITE_SOURCE_ID: "2015-01-16 12:08:06 7d68a42face3ab14ed88407d4331872f5b243fdf"
  • SHA1 dla sqlite3.c: 91aea4cc722371d58aae3d22e94d2a4165276905

Co nowego w wersji 3.8.7.4:

  • Ta wersja naprawia dodatki w muteksie wymaganym przez zmiany w poprawce 3.8.7.3, ale została przypadkowo pominięta. Muteks nie był wymagany przez żaden z wewnętrznych testów SQLite, ale Firefox ulega awarii bez niego. Dodano przypadki testowe, aby upewnić się, że muteks nigdy więcej nie zostanie utracony.

Co nowego w wersji 3.8.7.3:

  • Poprawka: upewnij się, że buforowane obiekty KeyInfo (wewnętrzna abstrakcja niewidoczna dla aplikacji) nie zanikają podczas pracy w trybie współużytkowanej pamięci podręcznej i często zamykają i ponownie otwierają niektóre połączenia z bazą danych, pozostawiając otwarte połączenia z innymi bazami danych na tym samym udostępnionym buforze podręcznym bez przerwy. Bilet e4a18565a36884b00edf.
  • Poprawka: rozpoznaje, że każda kolumna w prawej tabeli LEWEGO DOŁĄCZENIA może mieć wartość NULL, nawet jeśli kolumna ma ograniczenie NOT NULL. Nie stosuj optymalizacji, które zakładają, że kolumna nigdy nie ma wartości NULL. Bilet 6f2222d550f5b0ee7ed.
  • SQLITE_SOURCE_ID: "2014-12-05 22:29:24 647e77e853e81a5effeb4c33477910400a67ba86"
  • SHA1 dla sqlite3.c: 3ad2f5ba3a4a3e3e51a1dac9fda9224b359f0261

Co nowego w wersji 3.8.7.2:

  • Głównym powodem tego wydania jest rozszerzenie polecenia ROLLBACK, aby umożliwić uruchamianie zapytań w tym samym połączeniu z bazą danych, aby kontynuować działanie, o ile ROLLBACK nie zmieni schematu. We wszystkich poprzednich wersjach SQLite ROLLBACK powodowałoby natychmiastowe zatrzymanie oczekujących zapytań i zwrócenie SQLITE_ABORT lub SQLITE_ABORT_ROLLBACK. Oczekujące zapytania nadal będą przerywane, jeśli ROLLBACK zmieni schemat bazy danych, ale od tego wydania poprawki, kwerendy mogą nadal działać, jeśli schemat jest niezmieniony.
  • Oprócz rozszerzenia ROLLBACK, ta poprawka zawiera również poprawki dla trzech niejasnych błędów.

Co nowego w wersji 3.8.7.1:

  • Głównym powodem tej wersji poprawki błędów jest rozwiązanie problemu z aktualizowaniem wartości pól na końcu tabeli, które zostały dodane za pomocą ALTER TABLE ADD COLUMN. Ten problem 1 pojawił się po raz pierwszy w wydaniu 3.8.7.
  • Inną niewielką uciążliwością wydania 3.8.7 był fakt, że wersja Androida próbowała użyć funkcji strchrnul () ze standardowej biblioteki C, ale ta funkcja nie jest dostępna w systemie Android. Kompilacja Androida musiała dodać -DHAVE_STRCHRNUL = 0, aby obejść problem. Ta łata naprawia to, aby kompilacje Androida działały bez żadnych zmian.
  • Działanie PRAGMA journal_mode = TRUNCATE zostało ulepszone, tak że wywołuje fsync () po obcięciu pliku kroniki, gdy PRAGMA synchronous = FULL. Pomaga to zachować trwałość transakcji w przypadku utraty mocy występującej krótko po zatwierdzeniu.
  • Na koniec rozwiązano kilka długotrwałych i niejasnych problemów związanych z uruchomieniem aktualizacji i USUWANIA w WIDOKACH.

Co nowego w wersji 3.8.7:

  • Większość zmian z poprzedniej wersji to mikro-optymalizacje zaprojektowane, aby pomóc SQLite działać trochę szybciej. Każda indywidualna optymalizacja ma niezmiernie mały wpływ na wydajność. Ale ulepszenia się sumują. Mierzony na ściśle określonym obciążeniu pracą (używanym przez programistów SQLite jako proxy dla typowego obciążenia aplikacji) przy użyciu cachegrind w systemie Linux i skompilowany z gcc 4.8.1 i -Os na platformie x64 Linux, obecna wersja ma ponad 20% więcej pracy taka sama liczba cykli procesora w porównaniu do poprzedniej wersji. Cachegrind nie jest rzeczywistym procesorem, a obciążenie wykorzystywane do pomiaru jest tylko proxy. Twoje wyniki mogą się różnić. Spodziewamy się około połowy zmierzonej i zgłoszonej poprawy w aplikacjach w świecie rzeczywistym. 10% to mniej niż 20%, ale nadal uważamy, że jest całkiem niezły.
  • Ta wersja zawiera nowy zestaw interfejsów języka C, które mają niepodpisany 64-bitowy zamiast podpisanych 32-bitowych parametrów długości. Nowe interfejsy API nie zapewniają żadnych nowych możliwości. Ale ułatwiają pisanie aplikacji, które są bardziej odporne na przepełnienie typu integer.
  • Ta wersja zawiera również nowy sorter, który może korzystać z wielu wątków, aby pomóc w operacjach sortowania dużego. (Operacje sortowania są czasami wymagane do implementacji klauzul ORDER BY i / lub GROUP BY i prawie zawsze są wymagane dla CREATE INDEX.) Sorter wielu wątków jest domyślnie wyłączony i musi być włączony za pomocą komendy SQL wątków PRAGMA. Zwróć uwagę, że sorter wielowątkowy zapewnia szybszą wydajność w czasie rzeczywistym dla dużych sortów, ale wykorzystuje także więcej cykli procesora i więcej energii.

Co nowego w wersji 3.8.3.1:

  • Wersja SQLite 3.8.3.1 naprawia błąd występujący w wersjach 3.8.1, 3.8.2 i 3.8.3, który może powodować, że zapytania pomijają poprawne wiersze. Zalecana jest aktualizacja tych wersji.
  • Problem pojawia się tylko wtedy, gdy SQLite jest skompilowany z opcjami SQLITE_ENABLE_STAT3 lub SQLITE_ENABLE_STAT4 podczas kompilacji. W takim przypadku, jeśli zapytanie ma klauzulę WHERE, która zawiera takie wyrażenia:
  • GDZIE (wyrażenie1 LUB wyrażenie2 lub ... LUB wyrażenie) I kolumna NIE JEST NULL
  • Tam gdzie wszystkie wyrażenia od 1 do 4 są odpowiednie do użycia przez indeksy, to podczas planowania zapytań SQLite może błędnie przekonwertować wyrażenie "kolumna NIE JEST NULL" na "kolumna & gt; NULL". Ale ten ostatni termin nigdy nie jest prawdziwy, więc zapytanie nie zwróci żadnych wierszy.

Co nowego w wersji 3.8.3:

  • Dodano obsługę typowych wyrażeń tabel i klauzuli WITH.
  • Dodano funkcję printf () SQL.
  • Dodano SQLITE_DETERMINISTIC jako opcjonalny bit w czwartym argumencie do sqlite3_create_function () i powiązanych interfejsów, zapewniając aplikacjom możliwość tworzenia nowych funkcji, które mogą być obliczane z wewnętrznych pętli, gdy mają stałe argumenty.
  • Dodaj kod błędu SQLITE_READONLY_DBMOVED, zwrócony na początku transakcji, aby wskazać, że bazowy plik bazy danych został zmieniony lub przeniesiony z poziomu SQLite.
  • Zezwalaj na dowolne wyrażenia, w tym wywołania funkcji i podzapytania, w argumencie nazwy pliku do ATTACH.
  • Zezwalaj na użycie klauzuli VALUES w dowolnym miejscu, w którym instrukcja SELECT jest poprawna.
  • Zrestartowano PRNG używany przez sqlite3_randomness (N, P), gdy wywołano N == 0. Automatycznie resetowany po fork () na unixie.
  • Popraw wirtualną tabelę spellfix1, aby mogła efektywnie wyszukiwać według rowid.
  • Zwiększenie wydajności.
  • Ulepszenia komentarzy wyświetlanych w kodzie bajtowym VDBE podczas uruchamiania EXPLAIN.
  • Dodaj dyrektywę "% token_class" do generatora analizatora LEMON i użyj go, aby uprościć gramatykę.
  • Zmień kod źródłowy LEMON, aby uniknąć wywoływania funkcji bibliotek C, które OpenBSD uważa za niebezpieczne. (Np .: sprintf).
  • Poprawka: w funkcji importowania CSV powłoki wiersza poleceń nie należy kończyć pola, gdy na końcu wiersza CRLN występuje ukryty podwójny cudzysłów.
  • SQLITE_SOURCE_ID: "2014-02-03 13:52:03 e816dd924619db5f766de6df74ea2194f3e3b538"
  • SHA1 dla sqlite3.c: 98a07da78f71b0275e8d9c510486877adc31dbee

Podobne oprogramowanie

Komentarze do SQLite

Komentarze nie znaleziono
Dodaj komentarz
Włącz zdjęć!