[Db] stored function per generare stringa unica
Domenico L.
domenico.lorusso a pleiade.it
Mer 22 Ago 2007 12:18:56 CEST
Marcello Vezzelli ha scritto:
> Domenico L. ha scritto:
>
>> In ogni caso sia con una procedura che con due istruzioni in
>> tranasazione ti serve un lock di tipo write, o un semaforo affinché la
>> procedura che genera l'identificativo non venga utilizzata 2 volte
>> contempoaranemante....
>>
>>
>
> Ma il lock non è garantito dalla transazione?
>
Sì ma dipende da che tipo di isolation levle applichi se usi lo
standard, se ben ricordo, utlizzi un lock di tipo read.
Questo implica che che una insert fallisce, ma una procedura che legge
tutta la tabelal no
quindi:
SF del dml 1 -> lock table read -> get code "AAAAA"
SF del dml 2 -> lock table read -> get code "AAAAA"
insert dml 1 -> Ok
insert dml 2 -> failed
ma potrebbe capitare anche:
SF del dml 1 -> lock table read -> get code "AAAAA"
SF del dml 2 -> lock table read -> get code "AAAAA"
insert dml 2 -> Ok
insert dml 1 -> Failed
> Poniamo che in due transazioni venga generato lo stesso id... succederà
> che la prima insert ha successo e la seconda fallisce...
> non posso semplicemente ripetere la seconda insert?
>
sì... certo..
> Se il codice è tutto dentro a una sp, riprovo finché la insert non ha
> successo, generando un nuovo id ad ogni tentativo.
>
Sì... dipende dalle performance che vuoi ottenre e dal traffico
(moltiplicato *10) che prevedi di avere
Se ti aspetti una transazione all'ora puoi supporne una ogni 6 minuti
quindi ok
Se tene aspetti una al minuto puoi suppoer una ogni 6 secondi... e via
web diventa già rischioso
Se ti aspetti una al secondo è una follia!
Poi quanto tempo ci impiega a leggersi la tabella???
Non puoi generaer un codice alfanumerico partendo da un codice numerico?
(vedi anche risposta di Cris)
ciao
--
Domenico L. icq: 645 44 861 - msn: strahd a jumpy.it
per stupire mezz'ora basta un libro di storia,
io cercai di imparare la Treccani a memoria... [F.d.A.]
Maggiori informazioni sulla lista
Db