Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Prędkość bazy a typy pól
peku33
post
Post #1





Grupa: Zarejestrowani
Postów: 65
Pomógł: 5
Dołączył: 22.01.2010

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


Witajcie!
Stworzyłem sobię tabelę, w której trzymam dane (chwilowo ok 1,5K rekordów).
Starałem się, aby baza działała jak najszybciej, wszystko ok... do czasu

Tabelka składa się z pól INT / BIGINT / TINYINT / VARCHAR(64 - 255) / ENUM(2 wartości) / DOUBLE / TIMESTAMP / i nieszczęsne pola LONGTEXT

Do bazy nie dodaję żadnych rekordów, jedynie je modyfikuję. Z początku baza działa jak należy, niestety z czasem zaczyna coraz bardziej zwalniać.
Po 2 dniach zapytanie trwa ponad 1 sekundę(!). Optymalizacja bazy znów przywraca jej pierwotną prędkość.

Dane wyszukuję głównie po polach INT / BIGINT itd. na główne pola wg. których sortuję / szukam są indexy (w tym primary).

Czy powodem takiego spowolnienia bazy może być fragmentacja danych ze względu na pole LONGTEXT? Czy pomoże jego zamiana na varchar?
Jak inaczej mogę przyspieszyć bazę?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




zrob EXPLAIN na zapytaniu które ci muli a może sie rozjasni male co nie co
Go to the top of the page
+Quote Post
peku33
post
Post #3





Grupa: Zarejestrowani
Postów: 65
Pomógł: 5
Dołączył: 22.01.2010

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


Kod
id     select_type     table     type     possible_keys     key     key_len     ref     rows     Extra
1     SIMPLE     s     ref     typ,fails_to_del,state     state     1     const     1212     Using where; Using temporary; Using filesort
1     SIMPLE     t     ALL     PRIMARY     NULL     NULL     NULL     2     Using where


Coś takiego
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




No i pokaż jeszcze to zapytanie
Go to the top of the page
+Quote Post
peku33
post
Post #5





Grupa: Zarejestrowani
Postów: 65
Pomógł: 5
Dołączył: 22.01.2010

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


EXPLAIN SELECT * FROM ` v_lista_wyswietlane`; //Zwykle jest limit x, x+30

struktura widoku v_lista_wyswietlane:

CREATE VIEW v_lista_wyswietlane AS
SELECT rank, nazwa_pelna, hostname, ip, onlineplayers, maxplayers, map, platform, secure, os, typ, country FROM serwery AS s JOIN typy as t ON s.typ = t.id WHERE s.state='online' AND fails_to_del > 0 ORDER BY rank ASC

w tabeli serwery index na: ip, typ, flags, fails_to_del, rank, hostname, map, state owner, z czego na IP jest PRIMARY
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 25.09.2025 - 03:16