![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 194 Pomógł: 2 Dołączył: 12.04.2004 Skąd: Częstochowa Ostrzeżenie: (10%) ![]() ![]() |
Mamy pytanie dotyczące sensu stawiana bazy na silniku postgre danych w przypadku gdy :
- baza zawiera ok. 400 milionów rekordów. Rozmiar rekordu od 120 do 950 bajtów. - nie można tworzyć kluczy primary key bo dane w kolumnach nie są unikalne. - baza ma pracować online wystawiona w intenrnecie z średnio 4,5 userami online. - zapytania do bazy danych odwołują się do 3-6 tabel jednocześnie. Baza zawiera wszystkie części samochodowe świata. Czy jedynym wyjściem jest tutaj oracle? W tym momencie zapytanie o wyświetelenie 30 rekordów w pgadminie do jednej z głównych tabel trwa około 4 minut. (tabela przeindeksowana i klastrowana) Może ktoś borykał się z takimi bazami. będę wdzięczny za każdą odpowiedź. Ten post edytował dado 15.10.2008, 08:54:18 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 194 Pomógł: 2 Dołączył: 12.04.2004 Skąd: Częstochowa Ostrzeżenie: (10%) ![]() ![]() |
Cały czas się z tym męcze ale mam już spore postępy
- ograniczyłem liczbę rekordów w głównej tabeli aplikacji do 118 milionów - z parsowałem ją od nowa (4 dni (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ) dodając kolumnę table_id BIGSERIAL - utworzyłem index główny z kolumn które będę używał w zapytaniach + kolumna z "sztucznym" indexem BIGSERIAL - potem index btree na kolumny uzwane w zapytaniach ale już bez table_id (BIGSERIAL) - nie klastrowałem indexów (nie jestem pewien czy mi to pomoże czy zaszkodzi)
daje Kod Aggregate (cost=154.04..154.05 rows=1 width=0) (actual time=0.209..0.209 rows=1 loops=1) -> Index Scan using tecdoc_400b_gl on tecdoc_400b (cost=0.00..153.95 rows=38 width=0) (actual time=0.058..0.180 rows=264 loops=1) Index Cond: (((artnr)::text = '0 986 B02 309'::text) AND (genartnr = 8::bigint)) Total runtime: 0.257 ms serwer: procek INTEL CORE 2 DUO E8400 2x3.0Ghz, ram 2 gb - trochę gorzej w połączeniu z tabelami dołączanym joinem, nie stosuje mi w nich indexów, (a jak odwołuję się tylko do nich stosuje indexy), więc tu się jeszcze męcze, - całościowe pobranie wszystkich danych dla aplikacji www w najdłuższym zapytaniu trwa od 10-27 sekund, ale docelowo aplikacja będzie stał na bardziej wydajnym serwerze. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.10.2025 - 07:28 |