[oracle] partycjonowanie
Ra - 10-09-2006 00:59
[oracle] partycjonowanie
POczytałem sobie na temat jw i mam parę wątlipwości
- przy typie range podajemy np konkretny zakres dat, czy jeżeli chcę mie c partycje per miesiac to co miesiac muszę sam recznie ją tworzyc czy jest jakis automagiczny sposob żeby same się tworzyły
- czy mogą uzywac własnych funkcji hashujących ? czy przyspieszenie zapytan wynika tylko z faktu ze partycje są w róznych tablespace'ach na różnych dyskach ?
Powiedzmy że mam tabele do której zapisywane są statystyki odwiedzanych stron, wysyłanych kampani meilowych itp - ok 17mln wierszy/13GB Czy tutaj najlepiej zrobic partycje tylko wg typu zdarzenia (kliknięcie na stronie, wysłanie meila). Podział wg zakresu dat chyba nie ma sensu bo raczej mam zapytania typu date < jakas_data. Jakie indeksy zastosowac: global non-partitioned chyba nie przyspieszą zapytań Na co jeszcze zwrócic uwagę ?
P. Arek
Michał Kuratczyk - 10-09-2006 00:59
Ra wrote: > - przy typie range podajemy np konkretny zakres dat, czy jeżeli chcę mie > c partycje per miesiac to co miesiac muszę sam recznie ją tworzyc czy > jest jakis automagiczny sposob żeby same się tworzyły No generalnie musisz mieć partycje, do których wrzucasz dane, ale zrobienie zadania, które co jakiś czas utworzy kolejnych N partycji nie jest przecież żadnym problemem.
> czy przyspieszenie zapytan wynika tylko z faktu ze partycje są w róznych > tablespace'ach na różnych dyskach ? Tablespace nie ma tu raczej znaczenia. http://download-uk.oracle.com/docs/c....htm#sthref177
> Powiedzmy że mam tabele do której zapisywane są statystyki odwiedzanych > stron, wysyłanych kampani meilowych itp - ok 17mln wierszy/13GB > Czy tutaj najlepiej zrobic partycje tylko wg typu zdarzenia (kliknięcie > na stronie, wysłanie meila). Podział wg zakresu dat chyba nie ma sensu > bo raczej mam zapytania typu date < jakas_data. Musisz określić co chcesz osiągnąć. Dlaczego w ogóle myślisz o partycjonowaniu tej tabeli? Co jest nie tak, jaki problem chcesz rozwiązać?
> Na co jeszcze zwrócic uwagę ? Na to, że partycjonowanie jest przede wszystkim narzędziem ułatwiającym zarządzanie bazą ("okna danych" - trzymasz ostatnie X miesięcy czy lat), a dopiero w drugiej kolejności narzędziem poprawiającym wydajność. Do poprawy wydajności używa się go głównie w hurtowaniach danych lub przy hurtowanianych funkcjach systemu OLTP.
-- Michał Kuratczyk
Ra - 10-09-2006 01:00
On 2006-09-08, Michał Kuratczyk <kura@lj.pl> wrote: > Ra wrote: > >> Powiedzmy że mam tabele do której zapisywane są statystyki odwiedzanych >> stron, wysyłanych kampani meilowych itp - ok 17mln wierszy/13GB >> Czy tutaj najlepiej zrobic partycje tylko wg typu zdarzenia (kliknięcie >> na stronie, wysłanie meila). Podział wg zakresu dat chyba nie ma sensu >> bo raczej mam zapytania typu date < jakas_data. > Musisz określić co chcesz osiągnąć. Dlaczego w ogóle myślisz > o partycjonowaniu tej tabeli? Co jest nie tak, jaki problem > chcesz rozwiązać? > przede wszystkim chce przyspieszyc wykonywanie sie pewnego procesu, który de facto leci tylko po wierszach ktore dotycza meili - wiec wzglednie maly zbior danych w stosunku do calej tabeli - czy wieksza liczba partycji ma jakies zle strony ? np alokuje wiecej miejsca na dysku - jak najlpiej - tak aby przerwa byla krotka lub wcale-wykonac takie partycjonowanie, jak rozumiem zawsze trzeba utworzyc nowa table i najwyzej zmienic jej potem nazwe, czy przez create table as select czy alter table ... exchange. Jeszcze zauwazylem ze view oparte na tej tabeli maja warunki typu user_is is not null wiec ew. trzeba zalozyc indeks na funkcji ?
P. Arek
Michał Kuratczyk - 10-09-2006 01:00
Ra wrote: > przede wszystkim chce przyspieszyc wykonywanie sie pewnego procesu, > który de facto leci tylko po wierszach ktore dotycza meili - wiec > wzglednie maly zbior danych w stosunku do calej tabeli A jesteś pewien, że odpowiednie indeksowanie nie rozwiąże sprawy?
> - czy wieksza liczba partycji ma jakies zle strony ? np alokuje > wiecej miejsca na dysku Pewnie tak, ale raczej pomijalnie więcej. Ja mam tabele posiadające po kilkaset partycji i nie jest to problem.
> - jak najlpiej - tak aby przerwa byla krotka lub wcale-wykonac takie > partycjonowanie, jak rozumiem zawsze trzeba utworzyc nowa table i > najwyzej zmienic jej potem nazwe, czy przez > create table as select czy alter table ... exchange. No można zrobić nową tabelę a potem istniejącą tabelę zamienić z partycją tej nowej i zmienić nazwę nowej na starą. Przerwa będzie minimalna.
> Jeszcze zauwazylem ze view oparte na tej tabeli maja warunki typu > user_is is not null wiec ew. trzeba zalozyc indeks na funkcji ? A jaka tu jest funkcja? :-> Pomyśl, czy nie możesz dodać "not null" w definicji tabeli.
-- Michał Kuratczyk
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Oracle, SQL, PL/SQL. Jak =?ISO-8859-2?Q?napisa=E6_zapytanie=2C?==?ISO-8859-2?Q?_kt=F3re_zwr=F3ci_nazw=EA_atrybutu=2C_kt=F3reg o?==?ISO-8859-2?Q?_warto=B6ci_spe=B3niaj=B1_zadany_warunek?=
Oracle 19g +Insert +Insert +Insert...
[oracle] zapytanie dynamiczne z =?ISO-8859-2?Q?=22dynamiczn=B1_?==?ISO-8859-2?Q?nazw=B1_tabeli=22?=
[Oracle] jak =?ISO-8859-2?Q?ograniczy=E6_pami=EA=E6_dla_se?==?ISO-8859-2?Q?rwera=3F?=
=?ISO-8859-2?Q?=5BOT=5D_Zdany_egzamin_Oracle_1Z0-007_a?==?ISO-8859-2?Q?_brak_informacji_na_stronie_Prometric_-_czy?==?ISO-8859-2?Q?_co=B6_nie_tak=3F?=
[oracle] czy da =?ISO-8859-2?Q?si=EA_z_poziomu_procedury_?==?ISO-8859-2?Q?zrobi=E6_kopi=EA_zapasow=B1=3F?=
[oracle 10g] czy =?ISO-8859-2?Q?mo=BFna_wy=B3=B1czy=E6_wszys?==?ISO-8859-2?Q?tkie_wi=EAzy_w_schemacie=3F?=
MSSQL Express czy Oracle Express
=?iso-8859-2?q?[oracle]_Jak_sprawdzi=E6_wielko=B6=E6_tabeli_=3F=3F?=
=?ISO-8859-2?Q?Poszukjue_ksi=B1=BFki_"Oracle_?= =?ISO-8859-2?Q?optymalizacja_wydajno=B6ci"..?=
zanotowane.pldoc.pisz.plpdf.pisz.plquentinho.opx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|