modyfikowanie bazy sqlite 3 i wpływ na wydajność i optymalizacje |
modyfikowanie bazy sqlite 3 i wpływ na wydajność i optymalizacje |
25.09.2009, 08:03:15
Post
#1
|
|
Grupa: Zarejestrowani Postów: 259 Pomógł: 0 Dołączył: 12.07.2009 Ostrzeżenie: (10%) |
Podczas pracy z tą bazą natrafiła na kilka dziwnych zachowań i nie wiem czy to normalne.
Ale opowiem od początku. Stworzyłam sobie bazę danych, ale oczywiście nie przewidziałam wszystkiego i konieczne były zmiany. Z początku dodawanie kolumn i zmiany nazw kolumn. Ale później musiałam zmieniać definicje kolumn, a tego w sqlite nie da się zrobić. Więc kasowałam kolumnę i dodawałam nową już z poprawioną definicją. Następnie zaczęłam dodawać tabele. Rozmiar bazy bardzo wzrastał ale zaczęłam używać funkcji autovacum i vacum i już zmalał. Ale wczoraj postanowiłam przepisać (skopiować ) wszystkie dane z bazy do innego pliku, tak, żeby poćwiczyć php i sqlite. I okazało się, że ta skopiowana baza jest mniejsza. Zamiast 317kb ma 314kb. Sprawdziłam zawartosć jeszcze raz i jest ta sama. Myślałam, że jakiś błąd komputera, czy dysku i wykonałam kopiowanie bazy jeszcze raz i otrzymałam inny rozmiar 313kb. Potem kopiowałam ją jeszcze kilka razy i dostałam rozmiary od 311kb do 315kb. Dlaczego tak jest? Postanowiłam potem sprawdzić szybkość baz. Użyłam funkcji microtime. I okazało się, że ta nowsza baza jest szybsza trochę. Różnica tym większa im więcej w pętli select wykonałam. Dlaczego tak jes? I teraz moje właściwe pytania. a- Czy zmiany bazy (dodawani, usuwanie i zmiany nazw kolumn i tabel) wpływają na jej jakość. Czy baza w której się nie zmienia żadnych definicji jest lepsza niż ta która się poprawia? To bardzo dla mnie ważne, bo nie zdobyłam jeszcze wiedzy pozwalającej na zrobienie baz bez poprawiania jej później. b- Czy kolejność kolumn i tabel ma jakieś znaczenie? Ta baza to plik, więc może to co pierwsze zdefiniuje, to szybciej jest odczytywane? c- W ogóle jest bardzo zaskoczona, bo ja myślałam, że w bazach tak jak i w programowaniu ogólnie można poprawiać błędy i liczy się tylko ostatnia wersja, nie ważne czy stworzona jednym poleceniem, czy 1000 poleceń. Bardzo was proszę pomóżcie mi, bo ja teraz jestem już totalnie zagubiona w tym całym sqlite i bazach danych. pozdrawiam serdecznie Jola |
|
|
25.09.2009, 10:43:26
Post
#2
|
|
Grupa: Zarejestrowani Postów: 640 Pomógł: 44 Dołączył: 8.02.2004 Ostrzeżenie: (0%) |
Jak coś usuwasz w SQLite to żeby usunąć puste miejsca po tych danych należy wykonać polecenie SQL vacuum;
-------------------- |
|
|
25.09.2009, 14:48:47
Post
#3
|
|
Grupa: Zarejestrowani Postów: 259 Pomógł: 0 Dołączył: 12.07.2009 Ostrzeżenie: (10%) |
A przeczytałeś całego posta?
Cytat Rozmiar bazy bardzo wzrastał ale zaczęłam używać funkcji autovacum i vacum i już zmalał. A poza tym nie chodzi tylko o rozmiar bazy. pozdrawiam Jola |
|
|
25.09.2009, 16:28:48
Post
#4
|
|
Grupa: Zarejestrowani Postów: 640 Pomógł: 44 Dołączył: 8.02.2004 Ostrzeżenie: (0%) |
a,b - nie, lub pomijalne. Różne testy z bazą SQLite muszą uważać na np. keszowanie się pliku w pamięci podręcznej dysku i inne podobne zjawiska
-------------------- |
|
|
25.09.2009, 22:51:32
Post
#5
|
|
Grupa: Zarejestrowani Postów: 259 Pomógł: 0 Dołączył: 12.07.2009 Ostrzeżenie: (10%) |
Riklaunim no ale jak to jest? Są jakieś różnice w wydajności czy w ogóle ich nie ma? Bo jeśli w ogóle jakieś są to czuje się oszukana przez sqlite i przykro mi bo ja na prawdę wierzę (wierzyłam), że to taka fajna baza danych, ta łatwo ją przegrać i w ogóle.
A wracając do czyszczenia bazy. Co lepiej używać vacum czy auto_vacum? I jeszcze jedno, czy jest jakaś inna baza danych tak prosta jak sqlite ale z możliwością zmiany kolumn i tabel, no żebym mogła zmieniać definicje. Bo tak to tylko mi przegrywanie skryptem php bazy zostaje A to nie jest fajne jak trzeba odczytać wszystkie rekordy ze wszystkich tabel i wpisać je do nowej bazy. pozdrawiam Jola |
|
|
26.09.2009, 02:37:26
Post
#6
|
|
Grupa: Zarejestrowani Postów: 640 Pomógł: 44 Dołączył: 8.02.2004 Ostrzeżenie: (0%) |
Nie ma tematu co do szybkości po modyfikacjach Tyle. Co do edytowania baz SQLite to polecam sqlitebrowser - aplikacja desktopowa, w której można zmieniać strukturę table itd.
-------------------- |
|
|
26.09.2009, 08:25:00
Post
#7
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 25 Dołączył: 4.07.2007 Skąd: Berlin Ostrzeżenie: (0%) |
Jolam, sqlite uzywane jest tylko do mniejszych rzeczy, ponieważ ma słabą wydajność. Co prawda da się łątwo zgrać ale nie polecałbym jej używać przy większych projektach. Serwer nie wytrzyma obciążenia
-------------------- |
|
|
26.09.2009, 11:02:27
Post
#8
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) |
Cytat A wracając do czyszczenia bazy. Co lepiej używać vacum czy auto_vacum? I jeszcze jedno, czy jest jakaś inna baza danych tak prosta jak sqlite ale z możliwością zmiany kolumn i tabel, no żebym mogła zmieniać definicje. Bo tak to tylko mi przegrywanie skryptem php bazy zostaje A to nie jest fajne jak trzeba odczytać wszystkie rekordy ze wszystkich tabel i wpisać je do nowej bazy. MySQL Powszechnie uzywana, masz do niej duzo narzedzi, ksiazek itd. Da sie zmieniac strukture tabel, bez kasowania danych (np. typ kolumny). Co do przegrywanai bazy - masz programy dostarczane z bazka: mysql i mysql_dump - dwie linijki w konsoli i masz zgrana i wrzucana bazke. -------------------- Nie lubię jednorożców.
|
|
|
26.09.2009, 13:00:50
Post
#9
|
|
Grupa: Zarejestrowani Postów: 640 Pomógł: 44 Dołączył: 8.02.2004 Ostrzeżenie: (0%) |
Jolam, sqlite uzywane jest tylko do mniejszych rzeczy, ponieważ ma słabą wydajność. Co prawda da się łątwo zgrać ale nie polecałbym jej używać przy większych projektach. Serwer nie wytrzyma obciążenia SQLite jest wyraźnie szybsza dla operacji odczytu niż bazy serwer-klient typu MySQL. Jeżeli strona to głównie odczyt - SQLite będzie lepszym wyborem. -------------------- |
|
|
26.09.2009, 19:47:23
Post
#10
|
|
Grupa: Zarejestrowani Postów: 259 Pomógł: 0 Dołączył: 12.07.2009 Ostrzeżenie: (10%) |
To mnie Riklaunim uspokoiłeś, że można bazę sqlite modyfikować bez obaw o jej jakość. Tak się cieszę.
A sqlitebrowser jest lepsze niż sqlitemenager w firefoxie? Czy ten sqlitemenager mógł coś popsuć w bazie? Chodzi o tą wydajność i generalnie jakość bazy. Bo ja nim dodawałam i usuwałam kolumny. Czy na pewno on nic nie miesza z bazą? pozdrawiam Jola |
|
|
26.09.2009, 22:21:48
Post
#11
|
|
Grupa: Zarejestrowani Postów: 640 Pomógł: 44 Dołączył: 8.02.2004 Ostrzeżenie: (0%) |
"mi działa" sqlitebrowser.
-------------------- |
|
|
27.09.2009, 04:48:34
Post
#12
|
|
Grupa: Zarejestrowani Postów: 259 Pomógł: 0 Dołączył: 12.07.2009 Ostrzeżenie: (10%) |
Ale właśnie, że on nie działa z sqlite 3 tylko z sqlite 2. A ja mam sqlite 2 Czyli zostaje mi ręczne zmienianie bazy.
Riklaunim powiedz mi jak najsprawniej mogłabym robić te zmiany bazy? Chodzi o zmiany definicji kolumn i dodawani innych kolumn. Teraz to robię odczytując w tabeli wiersz po wierszu i wstawiam go do nowej tabeli z poprawioną definicją. Czy jest może jakieś ułatwienie? Czy można np wybrać baze1 a w niej tabele1 i z niej skopiować rekordy do nowej tabeli w nowej bazie wskazując jednocześnie, że np kolumnaA ma być skopiowana w miejsce kolumnyAnowa? Da się tak zrobić? Albo jakoś podobnie, bo by mi to bardzo pomogło. pozdrawiam Jola |
|
|
Wersja Lo-Fi | Aktualny czas: 23.09.2024 - 02:00 |