Pouziti autoincrementu

Petr Vileta petr na practisoft.cz
Čtvrtek Červen 19 14:16:34 CEST 2003


> > No pokud mi nekde bezi MySQL server a na datech mi alespon trochu
zalezi,
> > tak to PC je docela urcite napajene z UPS :-) No a pokud dojde k vypadku
>
>  Na tomto nemuzete, ale stavet zadny vetsi a hlavne stabilni IS. Co
>  kdyz vam nekdo vytahne napajeci kabel? Konzisence a moznost zacit
>  pracovat po predeslem padu by IMHO mela byt zajistena samotnou DB.
No jasne, pro velke systemy s MySQL pouzuju transakce, ale pro par set
zaznamu jsou transakce dost prepych. Zabira to spoustu mista na disku
(testoval jsem 10000 zaznamu: innodb 10MB, myisam 120kB) a je to zretelne
pomalejsi nez muj zpusob se zamykanim. Je pravda, ze pridavam radove jen
stovky zaznamu denne.

> > No pokud delam inzert a to je jedina operace, kdy to potrebuju zamknout,
tak
> > si ostatni nekolik milisekund pockaji. Nebo si pockam ja s tim LOCKem,
nez
>
>  Problem DB systemu je, ze cim vetsi zatez tim vice jsou ty prodlevy
>  zretelnejsi. To je-li to "nekolik milisekund" nezalezi jen na DB, ale
>  treba se zrovna uprostred vaseho zamku rozhodne kernel OS delat uplne
>  neco jineho a pak se vam vsechno todle sejde v jednom uzkem hrdle :-)
Jenze takhle se muze sejit i transakce (comit) treba s necim v crontab :-)

> > Vas by netrefil slak, kdyz budete mit ID typu mediumint, ale v tabulce
nikdy
> > nebude vic, nez treba 100 jmen? :-)
>
>  Jde o to co resite. Autoincrement/sequence resi prideleni unikatniho
>  cisla - a presne to delaji a pro ucel za jakym se PK pouvaji to
>  staci.
Me ale stve, ze musim pro predpokladane stovky zaznamu, ktere budou casto
pridavane a mazane dimenzovat mediumint nebo bigint pole ;-)

>  Mam jiz par let v chodu system z ktereho by jste mel radost. Jsou tam
>  generovana UID pro ucty uzivatelu a jelikoz rozsah tech cisel je
>  omezeny tak se "recykluji" (je to pochopitelne dost neprakticke,
>  protoze lepsi by bylo mit urcitou prodlevu nez se to stare UID
>  pouzije znova). Je to dost obludnost a neumim si predstavit neco
>  takoveho pouzivat u bezneho PK.
Take obcas pouzivam ve Foxpro, alel ja mam jeste karantenu, kam ta cisla na
nejakou dobu odkladam pred recyklaci.

> > No schvalne, jak to resite vy?
>
>  SELECT nextval('seqname');
Ale to asi nebude keyword MySQL, co? Alespon manual od 4.x o tom nerika nic
;-)
--
Petr




Další informace o konferenci Databases