Pouziti autoincrementu

Honza Pazdziora adelton na informatics.muni.cz
Pátek Červen 20 12:55:40 CEST 2003


On Thu, Jun 19, 2003 at 02:50:18PM +0200, Petr Vileta wrote:

> > nebo mi dokonce takovi lide prijdou na projekt a ja jim musim tyhle
> > navyky slozite mlatit z hlavy. :-))
> Ale on je i v manualu (v 4.x) MySQL uvaden priklad s LOCK TABLES a dokonce
> tam pisou, ze je vhodny pro to, co jsem uvadel ja, za predpokladu, ze clovek
> nepouziva TRANSAKCE. Jenze ja zkousel pouzivat innodb s transakcemi (na Win

Ano, ale je to mysleno tak, ze pokud mate aplikaci, ktera by
potrebovala transakce, tak se to tim da ubejit (castecne). Typicky
takovy ten skolni priklad s prevodem penez, kdy u jednoho uctu
pricitate a u druheho odcitate a chcete mit zachovany invariant
soucet vsech uctu. Ale ne pro operace, ktere se vubec nemusi delat.

> i Linuxu) a pri testech (nekolik set operaci a merit cas mezi prvni a
> posledni) to bylo o 30% pomalejsi nez pouziti myisam a zamykani. Navic

Ano, muze byt. A co se stane, kdyz takovych operaci pustite nikoli 100
za sebou, ale 100 vedle sebe a 100 za sebou? Na webu jsou pekna
srovnani toho, jak MySQL jde do haje s vykonem pri paralelnim
zpracovani (a staci pouze 100 selectu a 2 updaty vedle sebe), oproti
treba PostgreSQL. A to prave kvuli tomu, ze v predtransakcni dobe
muselo to MySQL tabulky zamykat. Ted, kdyz je mozne pouzit MySQL i na
transakce, mi prijde rucni zamykani jako krok zpet.

> innodb je strasne zrava na diskspace, spotrebuje zhruba 10x vic.
> Zaznamu        MyISAM        InnoDB
> 1                    0.005MB        10MB
> 100                0.520MB        10MB
> 1000              5.020MB        10MB

No, tohle neni 10x vic. :-)

Je to proto, ze

	The default behaviour is to create an auto-extending 10 MB
	file `ibdata1' in ...

Cili InnoDB si naschval alokuje nejmin 10 MB. Da se to zmenit, pokud
je to pro Vase potreby moc.

> A clovek musi neustale myslet na to, jak to MUZE byt velke. Napriklad u
> internetove databaze (treba blog) ale v okamziku spusteni nemam ani paru,
> zda se to uchyti a lidi tam budou psat stovky odkazu denne, nebo to bude
> skomirat na desitkach odkazu mesicne. Takze zalozim 50MB innodb a ono to
> bude vyuzite na 0,00nic procenta, nebo zalozim 5MB a ono to za par dnu bude
> plne a budu muset zvetsovat.

Je mozne to mit definovane jako autoextend.

V podstate bych rekl, ze podobna dilemata uz nekdo resil drive,
a proto je vetsina techhle veci parametrizovanych.

-- 
------------------------------------------------------------------------
 Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
 .project: Perl, mod_perl, DBI, Oracle, auth. WWW servers, XML/XSL, ...
		Only self-confident people can be simple.


Další informace o konferenci Databases