Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> szybkość mysql
acztery
post
Post #1





Grupa: Zarejestrowani
Postów: 945
Pomógł: 7
Dołączył: 15.03.2005
Skąd: katowice

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


Witam,

Mam MySQL 4.0.23 php. 5.0.3 Apache 2.0.52.



W jednej z table w bazie mam 250.000 rekordów. Wykonanie skryptu który mial by ( wylistować wszystkie rekordy wypozycjonować itp ) trwa bardzo długo. ( ok 3 min ) czasem wyskakuje błąd że mysql nie odpowiada wiesza sie komp itp.


Co zrobieć żeby to było szybciej

Zmiana na mysql 5 była by rozwiązaniem a może zmiana typu baz na PostgresSQL. Juz nie wiem przy 25 tys jest ok.

zapytania sa napisane tak optymalnie że sie bardziej nie da.?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
Kinool
post
Post #2





Grupa: Zarejestrowani
Postów: 560
Pomógł: 0
Dołączył: 15.07.2003
Skąd: Kwidzyn

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


Cytat(acztery @ 2005-11-16 16:33:59)
zapytania sa napisane tak optymalnie że sie bardziej nie da.?

pytasz sie nas czy zapytana sa opytamalne? a niby na jakiem podstawie ktos moze to stwerdzic nie widzac ich smile.gif

tak na marginesie to nie wiem czy to php czy MySQL zamula jesli chesz wybierac i wyswietlach 250 000 pozycji z bazy
Cytat
czasem wyskakuje błąd że mysql nie odpowiada wiesza sie komp
sugeruje ze to wina MySQL ale lepiej pokaz tabele, relacje i zapytania

INDEXOW chyba uzywasz? smile.gif


--------------------
Go to the top of the page
+Quote Post
acztery
post
Post #3





Grupa: Zarejestrowani
Postów: 945
Pomógł: 7
Dołączył: 15.03.2005
Skąd: katowice

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


nie pytam o zapytania ... indeksów uzywam

na marginesie nie wyswetlam wszystkich naraz tylko porcjami

Ten post edytował acztery 16.11.2005, 15:57:00
Go to the top of the page
+Quote Post
ghostrider
post
Post #4





Grupa: Zarejestrowani
Postów: 135
Pomógł: 0
Dołączył: 30.09.2005
Skąd: k-rk

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


ja pracuje na mySQL 4.1, na bazach danych zawierajacych blisko 200.000 wpisów, i testy które robiłem zanim wybrałem mySQL wykazywały ze zapytanie o wszystkie wpisy trwało 0.2 sekundy, problemem był php, on jest wolny. trzeba było LIMIT-ów uzywać w zapytanich aby do minimum ograniczyć prace jaka miał wykonać php.

pokaż nam tabele i zapytania.

i jeszce przyszło mi do głowy ze php ma w php.ini
dyrektywe
memory_limit , i mozna by tam pokombinować, zwiększyć przydział

Ten post edytował ghostrider 16.11.2005, 16:16:31


--------------------
There are 10 types of people in the world:
-Those who understand binary, and those who don't...
There's no place like 127.0.0.1
Go to the top of the page
+Quote Post
SongoQ
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Zastanawiam sie po co tyle danych ciagniesz? Wszystko to wyswietlasz? Jesli jest tyle danych to zrezygnuj z interwencji php i zwracaj dane takie jakie maja zostac wyswietlone.


--------------------
Go to the top of the page
+Quote Post
Kinool
post
Post #6





Grupa: Zarejestrowani
Postów: 560
Pomógł: 0
Dołączył: 15.07.2003
Skąd: Kwidzyn

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


dokladnie tak jak pisze SongoQ php powinno byc wykozystane tylko tam gdzie baza nie da rady! czyli tak wykonywac zapytania by zwracaly dane ktore zmaiezmy wyswietlic, wszelkie sortowania czy porcjowania robic na bazie a nie na php


--------------------
Go to the top of the page
+Quote Post
acztery
post
Post #7





Grupa: Zarejestrowani
Postów: 945
Pomógł: 7
Dołączył: 15.03.2005
Skąd: katowice

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


wyswetlam po 35 rekordów. ale w miedzy czasie. Pobieram

rekordy dotyczące kategorii , sesji, opisów, szablonu, uzytkownika.

no i proste zliczanie tego zapomocą count();

do tego porcjowanie 1,2,3,4,5,6,7,8,9,10.....34242 itd.

Czy przejscie na postgres bylo by rozwiazaniem ? czy ta baza jest szybsza czy poprostu zainstalować mysql 5 nie wiem ..

Planuję zrobić cos takiego gdzie w etapie koncowym bedzie okkolo 5 mil rekordów ( nie moge napisac co ) czy moze zrobic tak ze kazda kategoria bedzie miala swoja tabele ? ale to bez sensu :/ chyba

aaaa

uzywam limitow itp przeciez nie wyswetlil bym tak odrazu 250 tys glupi nie jestem

Ten post edytował acztery 16.11.2005, 19:01:04
Go to the top of the page
+Quote Post
SongoQ
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Cytat
Czy przejscie na postgres bylo by rozwiazaniem ? czy ta baza jest szybsza czy poprostu zainstalować mysql 5 nie wiem ..

Postgres nie z takimi danymi sobie radzi. Ale PG to nie tylko zwykly select czy insert to dodatkowe mechanizmy do triggerow, funkcji, widokow, itd.....


--------------------
Go to the top of the page
+Quote Post
acztery
post
Post #9





Grupa: Zarejestrowani
Postów: 945
Pomógł: 7
Dołączył: 15.03.2005
Skąd: katowice

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


ok to teraz jak bym chcial zmienic to naPs starczy jak zmienie np mysql_result na pg_result i tak z wszystkim czy musze sie wszystko od nowa?
Go to the top of the page
+Quote Post
SongoQ
post
Post #10





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


W prostych rzeczach tak, gorzej jak uzywasz funkcji wbudowanych tylko w MySQLa. Jaki widze problem to jesli w nazwach pol i tabel stosowales ` w PG czegos takiego nie ma.

Taka zmiana jest szybka ale wtedy nie wykorzystasz calej mocy PG. Zastanow sie nad przebudowa kodu.


--------------------
Go to the top of the page
+Quote Post
Kinool
post
Post #11





Grupa: Zarejestrowani
Postów: 560
Pomógł: 0
Dołączył: 15.07.2003
Skąd: Kwidzyn

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


z tego co wiem to w wiekszosci przypadkow (INSERTY, SELECTY) MySQL jes szybszy od PostgreSQL wiec nie wiem czy zalatwisz tym sprawe!

moze masz zle skonfigurowanego MySQL, wiele zalezy od optymalizacji samego serwera. Ja uzywam MySQL ba bazie gdzie w tabelach jest po kilkadziesiat tysiecy rekordow z relacjami i generowanie strony to ulamki sekund!


--------------------
Go to the top of the page
+Quote Post
acztery
post
Post #12





Grupa: Zarejestrowani
Postów: 945
Pomógł: 7
Dołączył: 15.03.2005
Skąd: katowice

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


kilka dziesiąc a kilkaset to roznica , jak wyzej mowilem musial by to wszystko byc bardzo szybkie przy ponad 2 miljonach rekordów.

może wina jest taka ze zapytanie łączy sie z 3 tabelami naraz moze to byc powod ? kod pokaze pozniej moze cos jeszcze wymysle
Go to the top of the page
+Quote Post
SongoQ
post
Post #13





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Cytat
może wina jest taka ze zapytanie łączy sie z 3 tabelami naraz moze to byc powod ? kod pokaze pozniej moze cos jeszcze wymysle


Indeksy, ulozenie tabel i warunkow niby wydaje sie nic takiego ale zawsze ma to wplyw na szybkosc przetwazania danych.


--------------------
Go to the top of the page
+Quote Post
artko
post
Post #14





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 18.07.2005

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


z całą stanowczością mogę stwierdzić że mysql w wersji 4 znakomicie radzi sobie z tabelami zawierającymi ponad 3,5 miliona rekordów. przy dobrym poindeksowaniu, wybranie kilkuset rekordów z takiej tabeli wg określonego kryterium trwa, o zgrozo, 0,0006 - 0,0007 sek. co innego prezentacja tych danych na ekranie.
dane te są prawdziwe na bardzo szybkim sprzęcie, ale bez przesady: pentium 4 3,2 , 1 GB ram, mandrake 10.1., sieć lokalna. zaznaczam że nie używam do tak ogromnych baz php.
Go to the top of the page
+Quote Post
SongoQ
post
Post #15





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Cytat
zaznaczam że nie używam do tak ogromnych baz php.

W tym przypadku php czy inny jezyk nie ma znaczenia. Najwazniejsza i tak jest baza danych gdzie i tak cale mielenie danych jest na bazie.


--------------------
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 Aktualny czas: 20.08.2025 - 23:58