ďťż
 
[ORACLE] Problem z insertem ďťż
 
[ORACLE] Problem z insertem
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[ORACLE] Problem z insertem



=?ISO-8859-2?Q?qqru=BCNIK?= - 12-04-2007 00:08
[ORACLE] Problem z insertem
  Wciąż często Oracle mnie zadziwia - niestety zazwyczaj negatywnie.

insert into MojaTabela (/wypisane pola/})

select /te same pola/
itd..

Selekcik jest dość złożony i korzysta z wielu tabel i vidoków (z czego
niektóre mają naprawdę dużo rekordów), sprawdza także existem czy
rekordy z wyniku już nie siedzą w "MojaTabela"

Wykonanie samego selecta (bez insertowania) zajmuje ok 2 min - długo ale
to wyjątkowo rzadko wykonywana operacja - więc do zniesienia.

Jeżeli zaś wynik wrzucany jest do MojejTabeli wykonanie tego trwa 2h a
czasem 15h (w zależności od chumoru servera)

Co może powodować takie trudności z zainsertowaniem?

MojaTabela zawiera ok. 10 tyś. rekordów a dorzucam do niej ok 50 tyś. (w
sumie żadna ilość).

MojaTabela nie posiada triggerów, kluczy, indeksów - nic. Poprostu ma
tylko same pola (służy mi tylko do chwilowego zgromadzenia wyników).

Obciążenie serwera podczas całej tej operacji jest znikome.

Co jest grane? Ma ktoś jakiś pomysł?

Dodam, że to nie pierwszy raz mam taki problem. :o/

Pozdroofki
--------------
qqruźNIK





Marek Horodyski - 12-04-2007 00:08

 
Użytkownik "qqruźNIK" <qqruznik@wywalto.poczta.onet.pl> napisał w wiadomości
news:evi6f6$tk4$1@news.onet.pl...
> Wciąż często Oracle mnie zadziwia - niestety zazwyczaj negatywnie.
>
>
> insert into MojaTabela (/wypisane pola/})
>
[...]
> Wykonanie samego selecta (bez insertowania) zajmuje ok 2 min - długo ale
> to wyjątkowo rzadko wykonywana operacja - więc do zniesienia.
>
> Jeżeli zaś wynik wrzucany jest do MojejTabeli wykonanie tego trwa 2h a
> czasem 15h (w zależności od chumoru servera)
>
> Co może powodować takie trudności z zainsertowaniem?

A czy to napewno jest problem z insertem ?
Probowales skipowac/feczowac/listowac wynik tego zapytania ?
Zdarzalo mi sie ze pewne zapytania w konstrukcji "A" dawaly pierwsze rekordy
po 3s, ale odczytanie wyniku selecta konczylo sie po 40 min., natomiast po
zmianie zapytania na konstrukcje "B" mialem pierwsze rekordy po 5s, a caly
przeczytany w 6stej sekundzie.

Pozdrawiam,
Marek Horodyski




=?ISO-8859-2?Q?Micha=B3?= Kuratczyk - 12-04-2007 00:08

  Marek Horodyski wrote:
> Zdarzalo mi sie ze pewne zapytania w konstrukcji "A" dawaly pierwsze
> rekordy po 3s, ale odczytanie wyniku selecta konczylo sie po 40 min.,
> natomiast po zmianie zapytania na konstrukcje "B" mialem pierwsze rekordy
> po 5s, a caly przeczytany w 6stej sekundzie.

A to oczywiście też możliwe. Wystarczy dodać +all_rows i ogólnie testować
raczej przez sqlplusa (set timing on), a nie przez SQLDeveloper/TOAD/etc,
bo one z racji graficznego interfejsu starają się stronicować wyniki
i możemy dać się oszukać.

--
Michał Kuratczyk




=?ISO-8859-2?Q?qqru=BCNIK?= - 12-04-2007 00:08

  Marek Horodyski napisał(a):

> A czy to napewno jest problem z insertem ?
> Probowales skipowac/feczowac/listowac wynik tego zapytania ?

Tak feczowałem do końca - To było pierwsze co mi przyszło na myśl. :-/
Resztę rekordów zaciągał szybko - nie pamiętam czasu ale na oko można
powiedzieć że leciało to z prędkością zbliżoną do szybkości z jaką
końcówka mogła allokować pamięć na wynik.

Pozdroofki
-----------
qqruźNIK





Marek Horodyski - 13-04-2007 00:03

 
Użytkownik "qqruźNIK" <qqruznik@wywalto.poczta.onet.pl> napisał w wiadomości
news:eviu1b$bjf$1@news.onet.pl...
> Marek Horodyski napisał(a):
>
>> A czy to napewno jest problem z insertem ?
>> Probowales skipowac/feczowac/listowac wynik tego zapytania ?
>
> Tak feczowałem do końca - To było pierwsze co mi przyszło na myśl. :-/
> Resztę rekordów zaciągał szybko - nie pamiętam czasu ale na oko można
> powiedzieć że leciało to z prędkością zbliżoną do szybkości z jaką
> końcówka mogła allokować pamięć na wynik.

No to jedyne co mi przychodzi na mysl, to wkladanie w transakcjach i
commitowanie co jakies n rekordow.
To n w jednym z algorytmow ostatnio dobieralem "na oko" testujac pomiedzy
100 a 600, pozostajac na 500.
Nie wiedzialem czym sie kierowac dokladnie, stad ten empiryzm.
Zbyt rewelacyjnycyjnych wynikow nie uzyskalem, rzedu 30%. To tez bylo
insertowanie rzedu 50k rekordow, i faktycznie moze trwac ladnie ponad 0.5h.
Jak baza zarznieta to i ponad godzine. Algorytm wyglada tak, ze jest
czytanie z remote bazy A do lokalnego dbfa w jakies kilka[nascie] sekund
(pomijajac czas pierwotnego zapytania), praktycznie niemierzalny czas
przeliczen, a potem insertowane do lokalnej bazy B - i tu juz trwa to
naprawde zauwazalnie dlugo. Widac "ten typ tak ma" :(. Sprobuj jeszcze z
tymi transakcjami po wiekszej grupie rekordow.

Pozdrawiam,
Marek Horodyski




Marcin 'goral' Goralski - 13-04-2007 00:03

  qqruźNIK wrote:

> Co jest grane? Ma ktoś jakiś pomysł?

taki sobie luzny pomysl - wprawdzie 50k rekordow to nie specjalnie
wiele, ale ... sprawdz co sie dzieje z redo logami i ich przelaczaniem -
czy przypadkiem nie ma zwloki na online'owym backupie. Byc moze
odpowiednie ustawienie parametrow logow pomoze. Baza chodzi w
archivelog ? Jesli tak, to przy malej wielkosci plikow tworzacych grupe
redo warto zerknac na ilosc procesow archivera.
Piszesz, ze zapis idzie wolno - jak wyglada w ogole przydzial pamieci
dla tej instancji ? Niestety, ciezko gdybyac nie znajac konfiguracji -
obciazenie servera piszesz, ze minimalne - a jak obciazenie zasobow
dyskowych, gdzie skladowana jest ta tablica ? Jej tablespace zawiera
sie w jednym pliku na jednym urzadzeniu (fizycznym), czy tez moze masz
to rozproszone /

marcin

PS sprawdzales, jak by to wygladalo gdybys ladowal dane z pliku, np
sqlloaderem ?




=?ISO-8859-2?Q?S=B3awomir_Szysz=B3o?= - 13-04-2007 00:03

  Dnia Wed, 11 Apr 2007 10:33:52 +0200, qqruźNIK <qqruznik@wywalto.poczta.onet.pl>
wklepał(-a):

>Wciąż często Oracle mnie zadziwia - niestety zazwyczaj negatywnie.
>
>
>insert into MojaTabela (/wypisane pola/})
>
>select /te same pola/
>itd..
>
>
>Selekcik jest dość złożony i korzysta z wielu tabel i vidoków (z czego
>niektóre mają naprawdę dużo rekordów), sprawdza także existem czy
^^^^^^^^^^^^^^^^^^^^^^^
>rekordy z wyniku już nie siedzą w "MojaTabela"
>
>Wykonanie samego selecta (bez insertowania) zajmuje ok 2 min - długo ale
>to wyjątkowo rzadko wykonywana operacja - więc do zniesienia.

A bez tego exists to jak działa?

Może coś takiego będzie lepsze:

insert ...
select a, b, c
minus
select a, b, c
from MojaTabela;

o ile te rekordy wstawiane kolejny raz są identyczne z istniejącymi.
--
Sławomir Szyszło mailto:slaszysz@poczta.onet.pl
Primus inter FAQires & Grand Inquisitor no.0 of pl.comp.bazy-danych
FAQ pl.comp.bazy-danych http://www.dbf.pl/faq/
Archiwum http://groups.google.com/groups?grou...mp.bazy-danych
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    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] 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?= [MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?= [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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nawschodzie.xlx.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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com