![]() |
![]() |
![]()
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.? |
|
|
![]() |
![]()
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 ![]() 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 zapytaniaINDEXOW chyba uzywasz? ![]() -------------------- |
|
|
![]()
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 |
|
|
![]()
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 |
|
|
![]()
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.
-------------------- |
|
|
![]()
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
-------------------- |
|
|
![]()
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 |
|
|
![]()
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..... -------------------- |
|
|
![]()
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?
|
|
|
![]()
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. -------------------- |
|
|
![]()
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! -------------------- |
|
|
![]()
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 |
|
|
![]()
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. -------------------- |
|
|
![]()
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. |
|
|
![]()
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. -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 23:58 |