[linux] A znova Re: Multiuzivatelsky SQL server

BYS5_Linux_Diskusia na softip.sk BYS5_Linux_Diskusia na softip.sk
Středa Říjen 13 10:13:17 CEST 1999


Nerobim s MySQL, ale preco zamykate celu tabulku ? Pouzite tranzakcie, to
mal mat kazdy SQL-server, pretoze jeo to jeho zakladna vlastnost.

BEGIN WORK
update xxx set pole=hodnota where pole2=?
if (status==OK) COMMIT WORK
else ROLLBACK WORK

Namiesto WORK tam moze byt aj TRAN, TRANSACTION ...

               vlk





Miroslav Oravec <mior na psg.sk> na 12.10.99 19:47:39

Odpovězte prosím  -  linux na rak.isternet.sk

Komu:       linux na rak.isternet.sk, databases na linux.cz
Kópia:           (Na vědomí: BYS5_Linux_Diskusia)
Predmet:        [linux] A znova Re: Multiuzivatelsky SQL server



Moja byvala otazka:
> > Preto sa pytam:
> >
> > - ak ja zamknem celu tabulku na zapis, je v tej dobe pre ineho
> > pristupna  k citaniu? (Dufam, ze ano)
>

A odpoved:

> Existule vicero druhu zamku. Zde je kousek z manualu MzSQL, ten celou vec
> ozrejmi:
> -----
> LOCK TABLES tbl_name [AS alias] {READ | [LOW_PRIORITY] WRITE}
>             [, tbl_name {READ | [LOW_PRIORITY] WRITE} ...]
> ...
> UNLOCK TABLES
>
> LOCK TABLES locks tables for the current thread. UNLOCK TABLES releases
any
> locks held by the current thread. All tables that are locked by the
current
> thread are automatically unlocked
> when the thread issues another LOCK TABLES, or when the connection to the
> server is closed.
>
> If a thread obtains a READ lock on a table, that thread (and all other
> threads) can only read from the table. If a thread obtains a WRITE lock
on
> a table, then only the thread holding the lock
> can READ from or WRITE to the table. Other threads are blocked.
>
> Each thread waits (without timing out) until it obtains all the locks it
> has requested.

Vysledok:

Ak som to dobre pochopil:
Pri zamknuti Lock READ je mozne tabulku citat, pri zamknuti Lock WRITE
ten, co ju takto zamkol, ju moze citat a zapisovat, OSTATNI su v keli,
teda nemozu nic, teda ani citat, pokym ju ten, co zamkol, zase
neodomkne.
A som tam, kde som bol....(v prd....).

Alebo sa mylim? Mam asi 50 uzivatelov.(naraz).
Staci uz tu raz spomenuta finta:

select pole from xxx;

... editace..

lock tables xxx write ;
update xxx set pole=nova_hodnota;
unlock tables;

Je to dost rychle, aby to tych dalsich 49, co by chceli trebars len
citat, nezdrzovalo ?

Teoria je jedna vec, prax druha...

Vdaka za kazdu dobru radu a prakticku skusenost.




--
                         Miroslav Oravec
                           mior na psg.sk


"Ja osobne verím, že systém Windows, ako uživateľské rozhranie,
je mŕtvy. Predpokladám to asi tak behom troch, štyroch rokov".
(Greg Bogochwalski - riaditeľ SCO pre východnú Európu a strednú
Áziu, Cebit, Hannover, 1999)









Další informace o konferenci linux