Zadejte hledaný výraz...

pgsql a jak rychle prepsat data v tabulce

hm
verified
rating uzivatele
(20 hodnocení)
5. 5. 2010 21:07:06
ahoj, jednorazove ale presto vcelku casto potrebuji jeden radek v tabulce obsahujici zhruba miliony radku "resetovat", tedy nastavit do nej stejnou hodnotu pro vsechny radky (ne skutecne to nejde udelat jinak, je skutecne nutne aby se ve stejny okamzik zmenil obsah sloupce vsech radku)
jde o to ze prikazem update x set y=1 sice funguje skvele, ale na serveru tenhle dotaz visi klidne nekolik minut nez se vykona kompletne a mezitim je onen sloupec zamknuty nebo se data ctou velmi pomalu - proste to pusobi komplikace.
jedno reseni tady je a to zrusit sloupec, vytvorit ho znovu, vytvorit znovu indexy atd to probehne prakticky hned.
Moje otazka je jestli neexistuje nejaky zpusob jak to delat bez ruseni sloupce a jeho opetovnem vytvareni s defaultni hodnotou kterou chci nastavit - to ej sice vcelku dobre reseni, presto ma nekolik nevyhod, proto bych rad vedel zda to nahodou nejde udelat jinak, pokud ne tak se hold budu muset spokojit s timto no :)
5. 5. 2010 21:07:06
https://webtrh.cz/diskuse/pgsql-a-jak-rychle-prepsat-data-v-tabulce#reply501108
co takhle ten sloupec udelat FK a tu hodnotu menit dle potreby v jine tabulce?
bude to o join navic, ale zapis bude rychlejsi..a v pripade potreby budes muset upravovat jen nektere zaznamy..
5. 5. 2010 22:36:05
https://webtrh.cz/diskuse/pgsql-a-jak-rychle-prepsat-data-v-tabulce#reply501107
hm
verified
rating uzivatele
(20 hodnocení)
5. 5. 2010 23:19:57
jde o typ boolean - fk je tudiz trochu zbytecne reseni... to uz radsi budu ten sloupec vzdycky mazat a vytvaret znovu nez pak patlat vselikde uplne zbytecne joiny :)
5. 5. 2010 23:19:57
https://webtrh.cz/diskuse/pgsql-a-jak-rychle-prepsat-data-v-tabulce#reply501106
kaspa
verified
rating uzivatele
(5 hodnocení)
5. 5. 2010 23:57:02
Pomocou FK by si sa update aj tak nevyhol. Ďalším riešením je vytvoriť novú tabuľku a preliať dáta :) Ide o to, že update je veľmi pomalá operácia a urýchliť nejde. Navyše, ak to chceš v jednej transakcií, tak dosť zahltíš transakčný log.
Ešte tu je jedno potencionálne urýchlenie (ale len v prípade ak je počet updatovaných riadkov dostatočne malý): update x set y=1 where y<>1
Skús napísať dôvod prečo to robíš - s takouto situáciou som sa ešte nestretol a nezdá sa mi, že by neexistovalo iné riešenie :)
5. 5. 2010 23:57:02
https://webtrh.cz/diskuse/pgsql-a-jak-rychle-prepsat-data-v-tabulce#reply501105
hm
verified
rating uzivatele
(20 hodnocení)
6. 5. 2010 00:30:51
jde o akci kdy se neco narocnejsiho provede se zaznamem v radku a radku se nastavi ze tento radek jiz script zpracoval po dobehnuti u vsech radku se hodnota nuluje a jede se od zacatku
6. 5. 2010 00:30:51
https://webtrh.cz/diskuse/pgsql-a-jak-rychle-prepsat-data-v-tabulce#reply501104
MichalekII
verified
rating uzivatele
(2 hodnocení)
6. 5. 2010 07:59:28
Hmmm, a co ukládat si je "ID/pořadové číslo" posledního zpracovaného řádku, z něj samořejmě odvodíš vše ... řádky zpracované, řády na které teprve dojde, aktuálně zpraovávaný řádek ....
6. 5. 2010 07:59:28
https://webtrh.cz/diskuse/pgsql-a-jak-rychle-prepsat-data-v-tabulce#reply501103
Napsal kaspa;507339
Pomocou FK by si sa update aj tak nevyhol.
To ne, ale update v radu jednotek je neco jineho, nez update v radu milionu ;)
Napsal AlesiBoss;507357
jde o akci kdy se neco narocnejsiho provede se zaznamem v radku a radku se nastavi ze tento radek jiz script zpracoval po dobehnuti u vsech radku se hodnota nuluje a jede se od zacatku
Tak to chlape mas spatne navrzenou databazi, pokud ukladas informaci o zpracovani do radku s daty.
Ber v uvahu radek jako objekt. Sloupce radku jsou jeho atributy. Pokud je to napr. clovek vlastnici auto. V tvem pripade ma clovek vlastnost (atribut) auto.
Coz v realnem svete je spatne. Clovek ma mit odkaz na auto (presneji auto na cloveka-majitele). A kdyz je potreba o cloveku zjistit kolik ma aut, tak se to jednoduse zjisti.
Normalizuj si databazi. A budes mit o funkcnost navic, napr. hisorii toho co a kdy se se radky delalo ;)
6. 5. 2010 12:16:24
https://webtrh.cz/diskuse/pgsql-a-jak-rychle-prepsat-data-v-tabulce#reply501102
hm
verified
rating uzivatele
(20 hodnocení)
6. 5. 2010 17:37:44
Napsal mallox;507505
To ne, ale update v radu jednotek je neco jineho, nez update v radu milionu ;)
Tak to chlape mas spatne navrzenou databazi, pokud ukladas informaci o zpracovani do radku s daty.
Ber v uvahu radek jako objekt. Sloupce radku jsou jeho atributy. Pokud je to napr. clovek vlastnici auto. V tvem pripade ma clovek vlastnost (atribut) auto.
Coz v realnem svete je spatne. Clovek ma mit odkaz na auto (presneji auto na cloveka-majitele). A kdyz je potreba o cloveku zjistit kolik ma aut, tak se to jednoduse zjisti.
Normalizuj si databazi. A budes mit o funkcnost navic, napr. hisorii toho co a kdy se se radky delalo ;)
tos rekl peknou picovinu protoze prirovnavat vlatsost jestli nekdo vlastni auto (a jake) k tomu jestli nad radkem probehla akce je jako srovanavt hovno s opici... (proste jestli nad radkem probehla akce nemuzu delat pres FK kdyz to eni nic jineho nez boolean ano/ne - co to je proboha za kravinu? cozpak treba udaj o tom zda je clovek muz nebo zena delas pres foreign keye? to ti teda v tom pripade dost nezavidim...)
kazdopadne reseni MichalekII bude podstatne lepsi - nechapu jak me to mohlo nenapadnout...
6. 5. 2010 17:37:44
https://webtrh.cz/diskuse/pgsql-a-jak-rychle-prepsat-data-v-tabulce#reply501101
kaspa
verified
rating uzivatele
(5 hodnocení)
6. 5. 2010 19:29:38
Napsal mallox;507505
To ne, ale update v radu jednotek je neco jineho, nez update v radu milionu ;)
to by šlo updatovať potom len plošne celé skupiny s rovnakým FK - pre tento problém nepoužiteľné.
Príznak spracovania na riadku sa bežne používa - nebýva ale zvykom ho meniť späť (načo znova spracovávať to isté, že?).
mallox myslel asi použitie SCD2 historizácie kedy sa entita ukladá v jednej tabuľke a jej vlastnosti v druhej kde sa všetky zmeny atribútov historizujú, pričom sa technický PK entity nemení a tým jej vzťahy zostávajú neporušené. Toto ti ale v tvojom prípade bude na nič, žiadnu históriu nepotrebuješ.
Riešenie od MichalekII bude fungovať len ak riadky spracovávaš zoradené
6. 5. 2010 19:29:38
https://webtrh.cz/diskuse/pgsql-a-jak-rychle-prepsat-data-v-tabulce#reply501100
Napsal AlesiBoss;507662
tos rekl peknou picovinu protoze prirovnavat vlatsost jestli nekdo vlastni auto (a jake) k tomu jestli nad radkem probehla akce je jako srovanavt hovno s opici... (proste jestli nad radkem probehla akce nemuzu delat pres FK kdyz to eni nic jineho nez boolean ano/ne - co to je proboha za kravinu? cozpak treba udaj o tom zda je clovek muz nebo zena delas pres foreign keye? to ti teda v tom pripade dost nezavidim...)
kazdopadne reseni MichalekII bude podstatne lepsi - nechapu jak me to mohlo nenapadnout...
tvoji hloupost predci jen tve nevychovani ;)
6. 5. 2010 21:41:32
https://webtrh.cz/diskuse/pgsql-a-jak-rychle-prepsat-data-v-tabulce#reply501099
Napsal mallox;507809
tvoji hloupost predci jen tve nevychovani ;)
+1
Evidentne jde o spatne navrzenou aplikaci.
Pokud ne, a je potreba tolik UPDATU, jiste vydelava apliakce dost penez na nakup silneho zeleza, kteremu to nebude delat problem...
7. 5. 2010 02:36:03
https://webtrh.cz/diskuse/pgsql-a-jak-rychle-prepsat-data-v-tabulce#reply501098
hm
verified
rating uzivatele
(20 hodnocení)
7. 5. 2010 02:58:55
Napsal syntaxsugar;507892
+1
Evidentne jde o spatne navrzenou aplikaci.
Pokud ne, a je potreba tolik UPDATU, jiste vydelava apliakce dost penez na nakup silneho zeleza, kteremu to nebude delat problem...
ale dyt provadim jen jeden update :) kazdopadne neslo o spatny navrh databaze ale o spatny navrh apliakce, vyreseno jinak bez potreby slupce i jakehokoliv updatu
mimochodem neni to zadne nevychovani - kdyz nekdo placa kraviny, rad mu to pripomenu ;)
---------- Příspěvek doplněn 07.05.2010 v 02:59 ----------
Napsal mallox;507809
tvoji hloupost predci jen tve nevychovani ;)
:) bez komentare
7. 5. 2010 02:58:55
https://webtrh.cz/diskuse/pgsql-a-jak-rychle-prepsat-data-v-tabulce#reply501097
Pro odpověď se přihlašte.
Přihlásit