DevProTalk

Forumi IT profesionalaca
web development, web design, e-business, SEO


Idite nazad   DevProTalk > Web development i web aplikacije > SQL baze podataka - Sponzor: Baze-Podataka.net
Želite da se reklamirate ekskluzivno na ovoj poziciji? Javite se

SQL baze podataka - Sponzor: Baze-Podataka.net MySQL, MSSQL, Oracle, Access, ODBC. Ako imate problem brže i preciznije ćete dobiti odgovor ako priložite strukturu tabela ili skript koji kreira tabele i puni ih test podacima umesto što to problem opisujete samo rečima. Sponzor: Baze-Podataka.net - Blog o bazama podataka

Odgovori
 
Alati teme Način prikaza
Staro 11. 01. 2006.   #11
ivanhoe
Ivan Dilber
Sir Write-a-Lot
 
Avatar ivanhoe
 
Datum učlanjenja: 18.10.2005
Lokacija: Bgd
Poruke: 5.320
Hvala: 104
2.344 "Hvala" u 583 poruka
ivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svima
Pošaljite poruku preko Skype™ za ivanhoe
Default

a jeste li razmisljali o upotrebi temp tabela koje su tipa HEAP, to jest drze se u memoriji servera ?

Nisam nikad merio vreme, ali su HEAP tabele prilicno brzo, ja sam tu tehniku koristio za kesiranje hijerarhije kategorija (posto su se u bazi cuvali samo parent id za pod-kategorije, pa onda to treba prevezati u stablo..) i fino je radilo... nema pojma doduse koliko je to brzo u poredjenju sa fajlovima, meni je trebao sql join, pa mi je odgovaralo da koristim bazu za to, da ne moram rucno da ga radim...

mislim da postoji i neka fora da se nalozi mysql da za obicnu myisam tabelu cuva index u memoriji umesto u zasebnom fajlu, jel zna neko nesto o tome ???
__________________
Leadership is the art of getting people to want to do what you know must be done.
ivanhoe je offline   Odgovorite uz citat
Staro 11. 01. 2006.   #12
Petar Marić
Python Ambassador
Master
 
Avatar Petar Marić
 
Datum učlanjenja: 06.06.2005
Lokacija: Novi Sad
Poruke: 602
Hvala: 28
27 "Hvala" u 17 poruka
Petar Marić će postati "faca" uskoro
Pošaljite ICQ poruku za Petar Marić
Lightbulb

Hm, mislim da HEAP (aka MEMORY) tabele nisu najefikasnije rešenje za keš, osim ako ne želiš da izgubiš sav sadržaj keša pri restartovanju servera

Citat:
14.3. The MEMORY (HEAP) Storage Engine
The MEMORY storage engine creates tables with contents that are stored in memory. Before MySQL 4.1, MEMORY tables are called HEAP tables. As of 4.1, MEMORY is the preferred term, and HEAP is a synonym for MEMORY.

Each MEMORY table is associated with one disk file. The filename begins with the table name and has an extension of .frm to indicate that it stores the table definition.

To specify explicitly that you want a MEMORY table, indicate that with an ENGINE or TYPE table option:

CREATE TABLE t (i INT) ENGINE = MEMORY;
CREATE TABLE t (i INT) TYPE = HEAP;


MEMORY tables are stored in memory and use hash indexes by default. This makes them very fast, and very useful for creating temporary tables. However, when the server shuts down, all data stored in MEMORY tables is lost. The tables continue to exist because their definitions are stored in the .frm files on disk, but their contents are empty when the server restarts.

...
Ako pročitate celokupnu stranicu možete zaključiti sledeće o HEAP/MEMORY tabelama:
Pros:
1. Brže su

Cons:
1. Zahtevaju dodatni RAM
2. Celokupne se moraju nalaziti u RAM-u
3. Pri restartovanju servera gube se podaci sadržani u njima (definicije same tabele ostaju)
4. Mogući sinhronizacioni problemi ako koristimo replikaciju
5. Ne podržavaju BLOB i TEXT polja (kao i njihove varijante, duh)
6. Polja tabele su fiksne dužine

Eto, sad je samo ostalo da se dodaju korektivni faktori za svaku stavku i da donesemo odluku (narodski rečeno: da izvagamo rešenje)
__________________
Python Ambassador of Serbia

Poslednja izmena od Petar Marić : 11. 01. 2006. u 23:02.
Petar Marić je offline   Odgovorite uz citat
Staro 11. 01. 2006.   #13
bluesman
Goran Pilipović
Sir Write-a-Lot
 
Avatar bluesman
 
Datum učlanjenja: 18.05.2005
Lokacija: Beograd
Poruke: 5.450
Hvala: 288
1.247 "Hvala" u 446 poruka
bluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušati
Pošaljite ICQ poruku za bluesman
Default

Heap tabele su (po meni) jedino dobre za privremene transakcije kada je potrebna temp tabela... iako mysql moze automatski da kreira TEMPORARY table pa da je brise po zavrsetku sesije, heap je ipak dosta brzi... Istina, igrao sam se sa tim cisto zbog testiranja i jednostavno nisam mogao da nadjem dobar razlog za neku drugu primenu.

Sto se tice tvog "Cons" br 3. to i nije tako "cons", narocito ako se koristi za kesiranje.
__________________
Goran Pilipović a.k.a. Ugly Fingers Bradley f.k.a. bluesman
I don't always know what I'm talking about but I know I'm right!
bluesman je offline   Odgovorite uz citat
Staro 12. 01. 2006.   #14
Petar Marić
Python Ambassador
Master
 
Avatar Petar Marić
 
Datum učlanjenja: 06.06.2005
Lokacija: Novi Sad
Poruke: 602
Hvala: 28
27 "Hvala" u 17 poruka
Petar Marić će postati "faca" uskoro
Pošaljite ICQ poruku za Petar Marić
Default

Hmm, zavisi od situacije - ali se u opštem slučaju slažem s tobom Gorane.
__________________
Python Ambassador of Serbia
Petar Marić je offline   Odgovorite uz citat
Staro 12. 01. 2006.   #15
zextra
Boris
Grand Master
 
Avatar zextra
 
Datum učlanjenja: 01.12.2005
Lokacija: Novi Sad
Poruke: 775
Hvala: 5
156 "Hvala" u 2 poruka
zextra is on a distinguished roadzextra is on a distinguished road
Default

A mozda za podatke koji slobodno mogu da nestanu nakon restarta servera? Mislim da se za svaki podatak moze reci da je bitan, ali isto tako (bar po meni) postoje situacije kada se podatak moze proglasiti nevaznim (npr. pre-generisani captcha kodovi koji nisu prosli validaciju, a jos uvek nisu uklonjeni iz nekog razloga, ili tabela sa aktivnim sesijama...)

Sto se tice privremenih tabela, ja sam koristio MyISAM jer sam imao potrebu da ucitam veliku kolicinu podataka, sortiram ih na nekoliko nacina, izracunam poziciju svakog clana doticnog niza prilikom svakog od sortiranja, i dobijene podatke da ucitam u stvarnu tabelu... Bez da zalazim u dalju problematiku, ne znam zasto se nisam odlucio za HEAP tabele, iako sam znao da postoje - morao bih to ponovo da uradim da bih uocio problem na koji sam tada naisao...
__________________
"It’s important to have goals when you pet. Otherwise you’re just rubbing another mammal for no reason." - Scott Adams
zextra je offline   Odgovorite uz citat
Staro 12. 01. 2006.   #16
bojan_bozovic
expert
Master
 
Avatar bojan_bozovic
 
Datum učlanjenja: 20.12.2005
Poruke: 730
Hvala: 0
0 "Hvala" u 0 poruka
bojan_bozovic is on a distinguished road
Default

A CREATE TABLE tabela1 TYPE=HEAP SELECT ... Da li se pogledi skladiste u memoriji? Ja cu da prenesem podatke iz moje baze na serveru u lokal (v5) da bas vidim hoce li tabela tipa HEAP uz DROP TABLE IF EXISTS da bude brze resenje od pogleda, jer poglede imam samo u lokalu. Mogu li ja nekako znati da li je DB server pao, pa ako jeste da regenerisem tabele? Mada MySQL ima svoj interni cache, za malo podataka i mnogo UPDATE upita bilo bi mozda bolje da se ide sa tabelom tipa HEAP (moj slucaj).
Kôd:
BEGIN ;# MySQL returned an empty result set (i.e. zero rows).
CREATE TABLE TMP(
PRIMARY KEY ( UID ) 
) TYPE = HEAP SELECT UID, USERNAME, AVERAGE
FROM USER
LEFT JOIN VOTES ON USER.UID = VOTES.USERID;# Affected rows:64
UPDATE TMP SET AVERAGE =10 WHERE UID =2;# Affected rows:1
SELECT * 
FROM TMP
ORDER BY AVERAGE DESC ;# Rows: 64
COMMIT ;# MySQL returned an empty result set (i.e. zero rows).
Pogledi na MySQL 3.23 Plus sto mozemo da udaramo upite u memoriju koliko zelimo (da li moze UPDATE ili INSERT INTO pa SELECT kod pogleda?) Naravno na kraju se udari REPLACE ili INSERT INTO ... SELECT - hmm SELECT nema smisla zbog BEGIN...COMMIT ali ovako mozemo da implementiramo AUTOCOMMIT=0 na MyISAM tabelama (ispravite me ako gresim) - jer ovo je rucno upravo ono sto InnoDB radi - pise u memoriju I pre zadnjeg REPLACE nista ne moze biti upisano u tabelu ako server padne Gledao sam prakticno na ovo kao na implementaciju pogleda u MySQL<5.0 ali ispade da moze vise da se uradi

Poslednja izmena od nixa : 13. 01. 2006. u 01:05.
bojan_bozovic je offline   Odgovorite uz citat
Odgovori


Alati teme
Način prikaza

Pravila pisanja
Možete ne započinjati nove teme
Možete ne slati odgovore
Možete ne slati priloge
Možete ne izmeniti svoje poruke
vB kôd je Uključen
Smajliji su Uključen
[IMG] kod je Uključen
HTML kôd je Isključen
Pogledajte forum

Slične teme
Tema Početna poruka teme Forum Odgovori Poslednja poruka
cache ivanhoe Flash 4 08. 09. 2010. 11:46
Cache rjesenje ... Zizi PHP 2 17. 06. 2009. 22:48
about:cache sirNemanjapro Web aplikacije, web servisi i software 9 15. 01. 2007. 14:55
server i cache borstale Web Hosting, web serveri i operativni sistemi 16 22. 04. 2006. 03:49
Kako ubiti FF cache ? ivanhoe (X)HTML, JavaScript, DHTML, XML, CSS 15 03. 03. 2006. 16:20


Vreme je GMT +2. Trenutno vreme je 23:00.


Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.
Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.