Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

mysql problem sa id poljem

[es] :: MySQL :: mysql problem sa id poljem

[ Pregleda: 2877 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

anakin14

Član broj: 73683
Poruke: 862
*.mbb.telenor.rs.



+133 Profil

icon mysql problem sa id poljem03.11.2013. u 12:41 - pre 127 meseci
Ovako, imam bazu kojoj pristupa dosta klijenata u isto vreme, i koristio sam auto increament polje da bi bez problema postavio ID svakog row-a bez da citam svaki put max value iz id-a i rizikujem da neki klijent vec postavi taj id i dodatno komplikujem stvari.

E sada sam zbog performansa podelio tabelu na table_rad i table_rad_temp gde u danasnjem danu upisujem u temp tabelu i na kraju rada svakog klijenta njegova polja prabacujem u glavnu tabelu. Ovo sam uradio jer mi je dosta citanja za dasanji dan, a manje za arhivu.

E sada se stvorila poterba za rad_meta tabelom, ali je problem sledeci, ID-ovi stvoreni autoincreament poljem u temp tabeli nisu isti jer kada mysql prebaci u glavnu tabelu on za ta polja kreira nove auto increament vrendosti.

Jedno resenje je ono koje sam i hteo da izbegnem a to je da mi kod generise ID za svaku transakciju pa da lockujem tabelu na svakom pisanju itd ali to zelim da izbegnem

Mozda je jedno od resenja da u glavnu/temp tabelu ubacim row metaid, pa da za one redove kojima je potreban meta generisem neki metaid na osnovu drugih parametara iz tog reda, ali opet to je jedan dodatni column koji opet nece biti potreban za sve redove.

U sustini kada se upisuje u dnenvu tabelu sve je u redu, jer meta field dobija autoincreament id ali je problem na kraju dana kada transakcija kopira sve u glavnu tabelu i brise iz dnevne.

Da li je mozda najbolje resenje da ubacim denormalizovana polja, pa da imam null vrednosti?
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.com
Via: [es] mailing liste

Sajt: mysql.rs


+2377 Profil

icon Re: mysql problem sa id poljem03.11.2013. u 13:01 - pre 127 meseci
ako sam te dobro shvatio ti u table_rad ne radis insert "normalno" vec
samo jednom dnevno presipas datu iz table_rad_temp u table_rad? Ako je
tako, izbacis skroz iz table_rad autoincrement za id i ostavis samo da
je pk te kada presipas datu iz table_rad_temp zadrzavas isti id. kada
zavrsis presipanje promenis table_rad_temp (u tom trenutku zakljucas obe
tabele na kratko) u table_rad_temp promenis auto_increment_id u
max(table_rad.id)+1 otkljucas tabele i to je to .. ako je table_rad_temp
myisam to je laganica (alter table...) dok ako je table_rad_temp innodb
onda moras da insertujes jedan row u tabelu rucno sa id=max(tab_rad.id)
i onda taj row da pri presipanju ignorises (nece se presuti svejedno
posto taj id vec postoji)

nisam skontao sta si hteo sa meta tabelom
 
Odgovor na temu

anakin14

Član broj: 73683
Poruke: 862
*.mbb.telenor.rs.



+133 Profil

icon Re: mysql problem sa id poljem03.11.2013. u 15:55 - pre 127 meseci
Koliko sam shvatio mislis da iz temp tabele koristim autoincreament za ID u glavnoj tabeli, pa cak necu morati ni da menjam ai zato sto brisanjem iz tabele se ne resetuje ai. Interesuje me samo da li postoje neke negativne situacije u ovom pristupu?

A sa tabelom table_rad_meta hocu da postignem da mi neki redovi zahtevaju neke specificne informacije pa imam 2 mogucnosti, da imam meta tabelu, ili da imam dodatnu colonu koja ce vecinu slucajeva sadrzati 0 ili null, a gde mi treba informaciju koja mi treba, ali pokusavam da izbegnem tu soluciju.
 
Odgovor na temu

anakin14

Član broj: 73683
Poruke: 862
*.mbb.telenor.rs.



+133 Profil

icon Re: mysql problem sa id poljem03.11.2013. u 19:15 - pre 127 meseci
i da, innodb mi je engin i mogu da promenim ai sa alter - ALTER TABLE table_rad AUTO_INCREMENT = 1001, ne znam na sta ste mislili kada ste rekli da moze samo akoje MyIsam
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.dynamic.sbb.rs.

Sajt: mysql.rs


+2377 Profil

icon Re: mysql problem sa id poljem03.11.2013. u 22:12 - pre 127 meseci
Citat:
anakin14: Koliko sam shvatio mislis da iz temp tabele koristim autoincreament za ID u glavnoj tabeli,


da

Citat:
anakin14:
pa cak necu morati ni da menjam ai zato sto brisanjem iz tabele se ne resetuje ai. Interesuje me samo da li postoje neke negativne situacije u ovom pristupu?


Citat:
anakin14: i da, innodb mi je engin i mogu da promenim ai sa alter - ALTER TABLE table_rad AUTO_INCREMENT = 1001, ne znam na sta ste mislili kada ste rekli da moze samo akoje MyIsam


kod innodb ako resetujes mysql kod prve potrebe za autoinc poljem isto se racuna kao max()+1, dakle ako ti uradis alter table t1 auto_increment = 100; i onda resetujes mysql vrati ti se autoinc na max+1, a posto ne mozes da racunas da ti se to nikad nece desiti zato sam rekao da insertujes jedan slog tako da ako se resetuje taj autoinc ce se izgenerisati automatski ok .. to je negativna situacija u tom pristupu ..

inace celu prica sa prepevavanjem date iz tabele u tabelu mozes da uradis iz stored procedure sa eventima tako da se to radi "samo" .. ja licno nisam ljubitelj takvih resenja ali su legitimna

Citat:
anakin14:
A sa tabelom table_rad_meta hocu da postignem da mi neki redovi zahtevaju neke specificne informacije pa imam 2 mogucnosti, da imam meta tabelu, ili da imam dodatnu colonu koja ce vecinu slucajeva sadrzati 0 ili null, a gde mi treba informaciju koja mi treba, ali pokusavam da izbegnem tu soluciju.


i dalje nemam pojma sta pricas
 
Odgovor na temu

anakin14

Član broj: 73683
Poruke: 862
*.mbb.telenor.rs.



+133 Profil

icon Re: mysql problem sa id poljem04.11.2013. u 11:32 - pre 127 meseci
tabela table_rad recimo ima ID racunid stavkaid artikal itd..

e sada mi je potrebno da na nekim redovima imam i broj stola recimo ali ne na svim. Umesto da dodajem brojstola u tabelu table_rad i da imam null unose mislio sam da napravi tabelu table_rad_stolovi recimo i imam ID broj_stola

O tome se radi.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.com
Via: [es] mailing liste

Sajt: mysql.rs


+2377 Profil

icon Re: mysql problem sa id poljem04.11.2013. u 11:36 - pre 127 meseci
to je ok
 
Odgovor na temu

bjevta
Bratislav Jevtic
http://www.tojesoft.co.rs
Beograd

Član broj: 5216
Poruke: 367
*.static.sbb.rs.

Sajt: www.tojesoft.co.rs


+5 Profil

icon Re: mysql problem sa id poljem25.11.2013. u 08:07 - pre 126 meseci
mozes i guid da koristis umesto autoinc. to ima svoje prednosti, pogotovo kod replikacije

moze biti da si dzabe seckao tu tabelu 'rad'. mozes da stavis index po datumu i da se cita samo tekuci dan. a moze i da se isparticionise tabela
Acta, non verba!
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.dynamic.sbb.rs.

Sajt: mysql.rs


+2377 Profil

icon Re: mysql problem sa id poljem25.11.2013. u 08:26 - pre 126 meseci
da li je mysql-ova implementacija uuid-a retardirana ili je sam algoritam @#%*@_@# ali meni je vec 2x pukla jedna aplikacija sa uuid-ovima kao pk tako da varijanta "sigurno nece da se pojave duplikati" kada se radi o velikom broju slogova na zalost ..
 
Odgovor na temu

farmaceut
Apoteka
Banja Luka

Član broj: 182739
Poruke: 55
188.124.195.*



+30 Profil

icon Re: mysql problem sa id poljem26.11.2013. u 19:49 - pre 126 meseci
A koliko je to puno klijenata i podataka, i na kakvom serveru?
Da particijnises tabelu np. na DAYOFYEAR(datum) + index, te malo optimizujes upite (da koriste podatke iz jedne particije) i ne za******s se sa presipanjem, 2 tabele i sl.
 
Odgovor na temu

[es] :: MySQL :: mysql problem sa id poljem

[ Pregleda: 2877 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.