Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> modyfikowanie bazy sqlite 3 i wpływ na wydajność i optymalizacje
jolam
post 25.09.2009, 08:03:15
Post #1





Grupa: Zarejestrowani
Postów: 259
Pomógł: 0
Dołączył: 12.07.2009

Ostrzeżenie: (10%)
X----


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
Go to the top of the page
+Quote Post
Riklaunim
post 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;


--------------------
Biblioteki: Skrypty, CMS | Kurs PHP | Python
Go to the top of the page
+Quote Post
jolam
post 25.09.2009, 14:48:47
Post #3





Grupa: Zarejestrowani
Postów: 259
Pomógł: 0
Dołączył: 12.07.2009

Ostrzeżenie: (10%)
X----


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
Go to the top of the page
+Quote Post
Riklaunim
post 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 winksmiley.jpg


--------------------
Biblioteki: Skrypty, CMS | Kurs PHP | Python
Go to the top of the page
+Quote Post
jolam
post 25.09.2009, 22:51:32
Post #5





Grupa: Zarejestrowani
Postów: 259
Pomógł: 0
Dołączył: 12.07.2009

Ostrzeżenie: (10%)
X----


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 sad.gif A to nie jest fajne jak trzeba odczytać wszystkie rekordy ze wszystkich tabel i wpisać je do nowej bazy.

pozdrawiam Jola
Go to the top of the page
+Quote Post
Riklaunim
post 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 winksmiley.jpg Tyle. Co do edytowania baz SQLite to polecam sqlitebrowser - aplikacja desktopowa, w której można zmieniać strukturę table itd.


--------------------
Biblioteki: Skrypty, CMS | Kurs PHP | Python
Go to the top of the page
+Quote Post
bartg
post 26.09.2009, 08:25:00
Post #7





Grupa: Zarejestrowani
Postów: 225
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


--------------------
Go to the top of the page
+Quote Post
dr_bonzo
post 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.
Go to the top of the page
+Quote Post
Riklaunim
post 26.09.2009, 13:00:50
Post #9





Grupa: Zarejestrowani
Postów: 640
Pomógł: 44
Dołączył: 8.02.2004

Ostrzeżenie: (0%)
-----


Cytat(bartg @ 26.09.2009, 09:25:00 ) *
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.


--------------------
Biblioteki: Skrypty, CMS | Kurs PHP | Python
Go to the top of the page
+Quote Post
jolam
post 26.09.2009, 19:47:23
Post #10





Grupa: Zarejestrowani
Postów: 259
Pomógł: 0
Dołączył: 12.07.2009

Ostrzeżenie: (10%)
X----


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
Go to the top of the page
+Quote Post
Riklaunim
post 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" winksmiley.jpg sqlitebrowser.


--------------------
Biblioteki: Skrypty, CMS | Kurs PHP | Python
Go to the top of the page
+Quote Post
jolam
post 27.09.2009, 04:48:34
Post #12





Grupa: Zarejestrowani
Postów: 259
Pomógł: 0
Dołączył: 12.07.2009

Ostrzeżenie: (10%)
X----


Ale właśnie, że on nie działa z sqlite 3 tylko z sqlite 2. A ja mam sqlite 2 sad.gif 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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 27.04.2024 - 11:15