Mtodos de Control de Concurrencia en Bases de Datos
Salvador Jess Romero Castellano 14 de Enero de 2005 Resumen El objetivo de los mtodos de control de concurrencia es garantizar la no inferencia o la propiedad de aislamiento de transacciones que se ejecutan de manera concurrente. Los distintos objetivos atacan el problema garantizando que las transacciones se ejecuten en un plan que sea serializable es decir que el resultado sea equivalente a el resultante de ejecutar un plan en serie. Este documento analiza los tres grandes grupos de mtodos ! protocolos "de bloqueo de marcas de tiempo ! optimistas# $aciendo especial nfasis en las ventajas e inconvenientes de usar unos u otros. Contenidos %. &rotocolos basados en tcnicas de bloqueo %. 'loqueos binarios %. (sando bloqueos binarios ). 'loqueos de lectura*escritura +. &rotocolo de bloqueo en dos fases %. 'loqueo en dos fases b,sico conservador estricto ! riguroso %. Conservador o est,tico ). Estricto +. Riguroso ). &roblemas del bloqueo en dos fases- .nterbloqueo ! espera indefinida %. &rotocolos de prevenci/n de interbloqueo ). 0etecci/n del interbloqueo +. Espera indefinida ). &rotocolos de ordenaci/n por marcas de tiempos %. 1rdenaci/n b,sica ). Regla de escritura de 2$omas +. 1rdenamiento estricto o conservador +. &rotocolos de control multiversi/n %. &rotocolo de ordenaci/n por marcas de tiempo multiversi/n ). &rotocolo de bloqueo en dos fases multiversi/n 3. &rotocolos de control optimistas % 4todos de control de concurrencia Protocolos basados en tcnicas de bloqueo Cabe destacar antes de comenzar el estudio de los protocolos basados en bloqueos que son los m,s utilizados por los S5'0 comerciales. Los dem,s tienen una alcance m,s te/rico que pr,ctico. (n bloqueo es una variable asociada a un elemento de datos de la base de datos usada para restringir las operaciones que se pueden aplicar sobre l. E6isten varios tipos de bloqueo- binarios "de propiedades limitadas# compartidos e6clusivos "usados en la pr,ctica# ! bloqueos de certificaci/n. Las operaciones sobre bloqueos se deben implementar como secciones cr7ticas es decir de forma indivisible8 el S5'0 no deber, alternar sus instrucciones con otras. Bloqueos binarios Se caracterizan por tener dos valores posibles8 bloqueado ! desbloqueado. Cada elemento de la base de datos tiene un bloqueo distinto. El bloqueo se9ala si una transacci/n est, operando sobre el elemento o est, libre para que se pueda operar con l. 0e esta manera se impide que dos o m,s transacciones estn operando sobre un mismo elemento al mismo tiempo. La implementaci/n de un bloqueo binario es simple8 basta con un vector de la siguiente forma- :referencia al dato bloqueado booleano referencia a la transacci/n que lo bloquea; donde el booleano es en s7 el indicador del bloqueo. Usando bloqueos binarios Cuando se usan bloqueos una transacci/n $a de usarlos mediante las funciones bloquear<elemento ! desbloquear<elemento cumpliendo las siguientes reglas- %. (na transacci/n 2 debe emitir la operaci/n bloquear<elemento"6# antes de que se realice cualquier operaci/n leer<elemento"=# i escribir<elemento"6# %. (na transacci/n 2 debe emitir la operaci/n desbloquear<elemento"=# despus de $aber completado todas las operaciones leer<elemento"=# ! escribir<elemento"=# en 2. %. (na transacci/n 2 no emitir, una operaci/n bloquear<elemento"=# si !a posee el bloqueo del elemento =. %. (na transacci/n 2 no emitir, una operaci/n desbloquear<elemento"=# a menos que !a posea el bloqueo del elemento =. Bloqueos de lectura/escritura Son una ampliaci/n de los bloqueos binarios. 2enemos que el bloqueo puede tener tres posibles posiciones- libre bloqueado para lectura ! bloqueado para escritura. 0e esta forma m,s de una transacci/n puede tener un mismo elemento de datos bloqueado para lectura pero s/lo una para escritura. Si una transacci/n quiere escribir en ese elemento $abr, de esperar a que el bloqueo quede libre "cualquiera que sea el tipo de bloqueo# ! a continuaci/n bloquearlo para escritura. Si quiere leer s/lo tendr, que esperar si el elemento est, bloqueado para escritura. Se dice por tanto que el bloqueo de lectura es compartido ! el de escritura e6clusivo. 2endremos por tanto tres operaciones8 bloquear<escritura"=# bloquear<lectura"=# ! desbloquear"=#. ) Salvador Jess Romero Castellano El sistema debe $acer cumplir las siguientes reglas para usar los bloqueos de lectura*escritura- %. (na transacci/n 2 debe emitir la operaci/n bloquear<lectura"6# o bloquear<escritura"=# antes de que se realice cualquier operaci/n leer<elemento"=# de 2. %. (na transacci/n 2 debe emitir la operaci/n bloquear<escritura"=# antes de que realice cualquier operaci/n escribir<elemento"=# de 2. %. (na transacci/n 2 debe emitir la operaci/n desbloquear"=# una vez que se $a!an completado todas las operaciones leer<elemento"=# ! escribir<elemento"=# de 2. %. (na transacci/n 2 no emitir, una operaci/n bloquear<lectura"=# si !a posee un bloqueo de lectura "compartido# o de escritura "e6clusivo# para el elemento =. %. (na transacci/n 2 no emitir, una operaci/n bloquear<escritura"=# si !a posee un bloqueo de lectura "compartido# o de escritura "e6clusivo# para el elemento =. %. (na transacci/n 2 no emitir, una operaci/n desbloquear"=# a menos que !a posea algn tipo de bloqueo sobre el elemento =. Las reglas 3 ! > se pueden relajar admitiendo que una transacci/n que tenga bloqueado un elemento en modo lectura lo pueda bloquear en modo escritura si no e6iste ninguna otra transacci/n que lo tenga bloqueado. ?s7 mismo si lo tiene bloqueado en escritura puede relajar el bloqueo a lectura. Protocolo de bloqueo en dos fases En l todas las operaciones de bloqueo preceden a la primera operaci/n de desbloqueo de la transacci/n. El proceso se puede as7 dividir en dos fases8 la fase de bloqueo ! de desbloqueo. Si se permite la conversi/n entre bloqueos las conversiones de bloqueos de lectura a bloqueos de escritura son en la primera fase ! las de bloqueos de escritura a lectura en la segunda. Su principal ventaja es que garantiza la seriabilidad lo que no se consigue usando simplemente bloqueos. Como inconvenientes podemos citar varios- 'loquea los elementos que podr7an ser desbloqueados tras su uso ocupados $asta la segunda fase impidiendo que otras transacciones que los necesiten los utilicen. Esto $ace que el rendimiento de este protocolo se degrade conforme aumenta el grado de concurrencia8 @o permite todos los planes serializables posibles. La implementaci/n de este este bloqueo depende del programador que puede no realizar su tarea convenientemente. Bloqueo en dos fases bsico, conservador, estricto y riguroso Son variaciones del bloqueo en dos fases. Se detallan a continuaci/n- Conservador o esttico Requiere que una transacci/n bloquee todos los elementos a los que tendr, acceso antes de + 4todos de control de concurrencia comenzar a ejecutarse. (na vez bloqueados no $abr, conversi/n de bloqueos de lectura a escritura. Si no es posible bloquearlos todos la transacci/n no bloquear, nada ! esperar, a poder bloquear todos los elementos necesarios en su totalidad. Su principal ventaja es que no s/lo garantiza la seriabilidad sino que evita el interbloqueo de transacciones. Como principal inconveniente se9alaremos que en la pr,ctica es mu! dif7cil saber qu elementos ser,n necesarios durante la transacci/n antes de que esta comience si no imposible. 2ambin es interesante destacar que al tener que esperar a poder bloquear todos los elementos que la transacci/n necesite este protocolo reduce la concurrencia. Estricto La transacci/n no libera ninguno de sus bloqueos de escritura antes de confirmarse o abortar. Este tipo de bloqueo garantiza planes estrictos en cuanto a recuperabilidad "recuperable es un plan que una vez confirmada la transacci/n no ser, necesaria des$acerla#. Sin embargo puede sufrir interbloqueos. Riguroso Es una versi/n m,s restrictiva del estricto. Similar al anterior pero adem,s tampoco libera los bloqueos de lectura. Es m,s f,cil de implementar. Problemas del bloqueo en dos fases: interbloqueo y espera indefinida El interbloqueo se produce cuando cada transacci/n 2 en un conjunto de dos o m,s transacciones est, esperando a algn elemento que est, bloqueado por alguna otra transacci/n 2A de dic$o conjunto. En este estado cada transacci/n est, parada en espera a que otra transacci/n libere el recurso. Las condiciones para que se produzca en interbloqueo son las siguientes- %. E6clusi/n mutua. Cada elemento est, bloqueado por una transacci/n o est, libre. ). Retenci/n ! espera- (na transacci/n que !a tiene elementos bloqueados puede solicitar un elemento adicional ! esperar que se le asigne sin devolver previamente ninguno de los anteriores. +. @o apropiaci/n- S/lo puede liberar un elemento la transacci/n que lo tiene asignado8 no se lo puede quitar otra transacci/n que tenga ma!or prioridad ni el S5'0. 3. Espera circular- E6iste una cadena circular compuesta por dos transacciones o m,s ! otros tantos elementos intercalados de manera que cada proceso est, esperando que se le asigne un elemento el cual a su vez est, asignado al siguiente proceso de la cadena. El tratamiento del interbloqueo est, orientado bien a prevenirlo bien a detectarlo ! evitarlo. Protocolos de prevencin de interbloqueo Estos protocolos no se emplean en la pr,ctica !a sea debido a suposiciones poco realistas o una posible sobrecarga del sistema. Esto no s/lo es v,lido para las bases de datos8 en los sistemas operativos el coste de la detecci/n en los casos de los sistemas para &C o similares ! el de la 3 Salvador Jess Romero Castellano prevenci/n en casi todos $ace que no se $aga nada para tratarlo circunstancia con la que tenemos que enfrentarnos a menudo ! que solemos resolver matando un programa. El primer protocolo el bloqueo en dos fases conservador !a lo $emos visto ! comentado. (n segundo protocolo que tambin limita la concurrencia consiste en ordenar todos los elementos de la base de datos ! asegurarse de que una transacci/n que necesite varios elementos los bloquear, segn ese orden. Su inconveniente es que obliga al programador a conocer la manera en que est,n ordenados estos elementos. 1tros mtodos para evitar el interbloqueo se basan en una 'marca de tiempo de transaccin' que es un identificador nico asignado a la transacci/n que a!uda a ordenar las transacciones temporalmente segn el orden en que $an sido iniciadas. 4ediante estas marcas se decide si una transacci/n que se encuentre en posible situaci/n de interbloqueo debe esperar abortar o $acer que otra transacci/n aborte. Ba! dos enfoques conocidos como esperar-morir ! herir-esperar. Suponiendo que una transacci/n ? intenta bloquear una elemento = bloqueado por una transacci/n ' en el primer enfoque si ? es m,s antigua que ' espera a que ' libere =. En caso contrario ? aborta ! vuelve a reiniciar con la misma marca de tiempo. En el enfoque $erirCesperar si ? es m,s antigua que ' entonces ' aborta. En caso contrario ? espera a que ' acabe. Estos algoritmos tienen la virtud de evitar la espera indefinida "comentada m,s adelante#. El algoritmo de no-espera consiste en que si una transacci/n no consigue un bloqueo aborta ! se reinicia tras un lapso de tiempo aunque no fuera a $aber interbloqueo. Las desventajas de este mtodo son evidentes. &ara mejorarlo se propone la espera cautelosa que reduce el nmero de abortos innecesarios. Supongamos como antes que ? trata de bloquear un elemento = !a bloqueado por '. Si ' no est, en espera de otro bloqueo ? espera a que ' libere =. En caso contrario se aborta ?. Este mtodo trata de evitar el interbloqueo atacando a su condici/n de espera circular. 1tros algoritmos dise9ados para evitar bloqueos en espera de recursos compartidos mltiples como el algoritmo del banquero pueden ser aplicados tambin en este conte6to. Deteccin del interbloqueo Este enfoque es m,s pr,ctico ! m,s interesante si esperamos que $a!a poca interferencia entre transacciones. La forma m,s sencilla ! conocida es mediante el grafo de espera de transacciones*elementos. Se tiene que e6iste interbloqueo si el grafo de espera tiene un ciclo. El sistema revisa peri/dicamente este grafo ! si encuentra un ciclo elige una transacci/n v7ctima para abortarla ! as7 romper el anterior. El inconveniente de este sistema es decidir una pol7tica adecuada para la frecuencia de la comprobaci/n ! la selecci/n de v7ctimas. 1tra soluci/n m,s sencilla es el uso de tiempos limitados que presupone que una transacci/n que lleve en espera un tiempo superior a un tiempo predefinido se encuentra bloqueada ! se procede a su eliminaci/n. Espera indefinida Este problema tiene lugar cuando una transacci/n no puede continuar durante un periodo indeterminado mientras otras transacciones del sistema continan con normalidad. La soluci/n a > 4todos de control de concurrencia este problema pasa por tener una planificaci/n justa que impida que algunas de las transacciones Amueran de inanici/nA. Protocolos de ordenacin por por marcas de tiempo (na marca de tiempo es un identificador nico que el S5'0 crea para identificar una transacci/n basada en la ma!or7a de los casos en el momento en que se inician. Se pueden por tanto ordenar las transacciones cronol/gicamente segn su marca de tiempo. Este mtodo se basa en marcas de tiempo para ordenar las transacciones. El plan resultante de esta ordenaci/n ser, equivalente a un plan en serie con las transacciones ordenadas segn sus propias marcas de tiempo. Esto es una diferencia fundamental conforme a los mtodos anteriores en los que los planes serializables lo eran a algn plan serial que se pueda construir con los protocolos de bloqueo "Dque no eran todos los planes seriales posiblesE#. En este caso sabemos a qu plan serial se corresponder7a el plan serializable resultante de aplicar ordenaci/n por marcas de tiempo. Este sistema asocia a cada elemento un par de variables8 marca_lectura ! marca_escritura en las que se escribir, el valor de la marca de tiempo de una transacci/n que las consulte. 0e esta manera la marca_lectura(X) ser, igual a la marca de tiempo de la ltima transacci/n que $a!a le7do con 6ito el elemento =. Fdem para marca_lectura(X). El mtodo consiste en dejar al sistema organizar las operaciones libremente "no las ordena de forma activa por tanto# pero al ejecutar una operaci/n verifica que esta no contradice el orden de seriabilidad. &odr7amos decir por tanto que es un mtodo optimista. E6isten tres enfoques del mtodo segn qu $acer cuando al tratar de $acer una operaci/n se presenta el conflicto- Ordenacin bsica Consiste en lo siguiente- Cuando la transaccin T emite una operacin escribir_elemento(X): -- Si alguna de las marcas de X son mayores que la marca de tiempo de T, entonces la operacin no se llea a cabo y se aborta T. -- Si no, se procede con normalidad, y se asigna el alor de la marca de tiempo de T a marca_lectura(X) Si alguna de las marcas son ma!ores que la marca de 2 significa que una transacci/n posterior a 2 escribi/ o le!/ de = ! por tanto que 2 usara el elemento = estar7a en contra del orden por antigGedad de transacci/n8 la transacci/n m,s vieja deber7a escribir en = antes de que la joven usara este elemento. Cuando la transaccin T emite una operacin leer_elemento(X) Si la marca_escritura(X) es mayor que la marca de tiempo de T, se rec!a"a la operacin y se aborta y reierte T. Si no, se procede con normalidad, y se asigna a marca_lectura(X) el mayor alor entre la marca de tiempo de T y la marca_lectura(X) actual. H Salvador Jess Romero Castellano En esta ocasi/n dado que lo que queremos $acer leer no afecta a otras transiciones s/lo debe preocuparnos que una transacci/n m,s joven $a!a escrito en la variable en cuesti/n. ?l abortar una transacci/n se vuelve a introducir en el sistema con una nueva marca de tiempo para probar suerte como una transacci/n nueva. Ientajas- ?l ser un mtodo semioptimista da mejor rendimiento cuando la interacci/n entre las transacciones es reducida. Con este mtodo no se puede producir interbloqueo. .nconvenientes- (na transacci/n puede verse sometida a un reinicio c7clico. Si e6iste muc$a interacci/n puede ser mu! costoso al tener que des$acer muc$as veces. Se puede producir una restauraci/n en cascada- ?l des$acer una transacci/n 2% cualquier transacci/n 2) que $a!a utilizado un valor escrito por 2% $abr, de des$acerse tambin ! as7 sucesivamente. Regla de escritura de !o"as Es una variante del protocolo anterior dise9ada para rec$azar menos operaciones de escritura. Si se va a escribir un elemento que $a!a sido escrito por una transacci/n m,s joven simplemente se ignora la escritura obteniendo el mismo efecto como sta escribiese su valor justo despus de que la transacci/n que est, intentando escribir $ubiera escrito su valor lo que ser7a v,lido. El caso del intento de operaci/n lectura"=# queda por tanto as7- -- Si marca_lectura(X) es mayor que la marca de T, abortar, y des!acer T. -- Si marca_lectura(X) es mayor que la marca de T, ignorar esta operacin y continuar. -- #n otros casos se e$ecuta la operacin y se asigna a marca_lectura(X) el alor de la marca de lectura de T. Ordena"iento estricto o conservador 1tra variante del primero. El ordenamiento b,sico por marcas de tiempo trata de ejecutar una operaci/n tan pronto como se recibe sta. ?s7 la ejecuci/n de las operaciones es progresiva pero como $emos como $emos comentado antes se pueden producir muc$os reinicios de transacciones. En esta variaci/n una transici/n que emita una operaci/n de lectura o escritura tal que la marca de la transacci/n es menor que marca<escritura"=# sufre un retraso de su operaci/n $asta que la transacci/n que escribi/ el valor de = $a!a abortado o se $a!a terminado. Su principal ventaja por tanto es que evita el reinicio ! la restauraci/n en cascada. .nconveniente- ?l frenar una transacci/n se da9a la concurrencia en general ! el rendimiento de dic$a transacci/n en particular a e6pensas de lo que $aga la transacci/n a la que se espera. J 4todos de control de concurrencia Protocolos de control multiversin Se basan en conservan los valores antiguos de un elemento cuando es actualizado. El mantener varios valores del mismo elemento es lo que da al nombre de estos protocolos. 2ener varias versiones de un elemento facilita que algunas operaciones de lectura que no se llevar7an a cabo por protocolos como los anteriores pueden ser aceptadas si se $acen sobre una versi/n m,s antigua del mismo. 0e esta manera al escribir en un elemento se escribe en una ueva versi/n conservando las antiguas o algunas de ellas para otras transacciones m,s antiguas que pudieran necesitarlas m,s tarde evitando as7 que reinicien. Protocolo de ordenacin por "arcas de tie"po "ultiversin &ara cada elemento = el sistema guarda varias versiones = % = ) ...= K teniendo para cada versi/n una marca_lectura(X i ) ! una marca_escritura(X i ) similares a las marcas utilizadas por otros mtodos !a comentados pero referidos a la versi/n concreta X i . &ara asegurar la seriabilidad usamos dos reglas- %. Si la transacci/n 2 emite una operaci/n escribir<elemento"=# tomamos versi/n de = llammosla = i con ma!or marca_lectura(X). Si este valor es ma!or que la marca de tiempo de 2 abortamos ! des$acemos la transacci/n. Caso contrario se crea una nueva versi/n de = ! se asigna la etiqueta de tiempo de 2 a sus valores marca_lectura(X) ! marca_escritura(X). ). Si la transacci/n 2 emite una operaci/n leer<elemento"=# se busca la versi/n = i que tenga su marca_escritura(X i ) ma!or posible pero sin sobrepasar la marca de tiempo de 2. Se utiliza este elemento ! despus asignamos a marca_lectura(X i ) el ma!or valor entre la marca de tiempo de 2 ! el valor que tuviera antes. La principal ventaja de este mtodo salta a la vista8 no $a! operaci/n de lectura rec$azada que provoque un reinicio de la transacci/n. El principal inconveniente tambin cae por su propio peso. El mantener varias versiones de un elemento puede llegar a resultar costoso. En el caso peor la base de datos puede degenerar en una base de datos temporal que sigue la pista a todos los cambios ! los momentos en los que ocurrieron. Cabe destacar tambin que en este mtodo abortar una transacci/n puede provocar una restauraci/n en cascada !a comentada antes. Protocolo de bloqueo en dos fases "ultiversin Es una ampliaci/n del bloqueo en dos fases antes comentado. En esta versi/n se tienen tres tipos de bloqueo8 los dos anteriores de escritura ! lectura ! uno m,s llamado de certificaci/n. ?l contrario que en el bloqueo en dos fases simple un bloqueo de escritura no impide que otras transacciones bloqueen otros elementos para lectura. Lo que se $ace en caso de que transacci/n bloquee un elemento para lectura para poder conseguir esto es crear una nueva versi/n de = llammosla =A en la que la transacci/n bloqueante podr, realizar cuantos cambios quiera mientras las dem,s transacciones seguir,n viendo el valor anterior de = para lectura. Es importante se9alar que si bien con este mtodo se pueden realizar una lectura ! una escritura simult,neas sigue sin poder realizarse dos escrituras al mismo tiempo. Cuando una transacci/n que $a!a bloqueado un elemento para escritura est lista para confirmarse debe obtener el bloqueo de certificaci/n de =. ?$ora s7 el bloqueo de certificaci/n es L Salvador Jess Romero Castellano e6clusivo respecto a los otros dos. (na vez lo obtiene el valor de = pasa a ser el de =A con lo que a partir de ese momento es visible para todas las transacciones. La novedad de este mtodo con respecto al bloqueo en dos fases !a visto es que permite la lectura a mismo tiempo que la escritura. Sin embargo una transacci/n deber, esperar a confirmarse $asta tener los bloqueos de certificaci/n de todos los elementos que $a modificado. Este esquema evita el aborto en cascada !a que siempre se leen versiones confirmadas de =. Sin embargo si permitimos que un bloqueo se convierta en un bloqueo de escritura tal como !a vimos anteriormente para la versi/n simple de este bloqueo se puede producir un interbloqueo. Protocolos de control optimistas Los protocolos anteriores que podemos clasificar como pesimistas comprueban que la operaci/n que la transacci/n se dispone a $acer es v,lida antes de modificar el elemento en la base de datos. Los protocolos de control optimistas por el contrario presuponen que todas las operaciones se van a efectuar en orden correcto ! por tanto no controlan la validez de las operaciones realizadas $asta que la transacci/n termina en la llamada fase de validaci/n o certificaci/n. La forma de implementar estos protocolos para este conte6to "transacciones que $an de ser confirmadas# es $acer que las transacciones lleven a cabo sus modificaciones en un espacio particular al que se $an copiado previamente los datos que la transacci/n va!a a necesitar. Si al final del proceso los datos resultantes son v,lidos se pasan del espacio particular a la base de datos. Con esto tenemos que los protocolos de bloqueo optimistas tienen tres fases bien diferenciadas- Fase de lectura/ejecucin- En ella las transacciones leen cuantos elementos necesiten de la base de datos pero realizan las modificaciones en un espacio particular como !a $emos se9alado. Fase de certificacin/validacin- Se verifica que los resultados de la transacci/n no violan la seriabilidad. 0e ser as7 "el resultado no es correcto# la transacci/n reinicia "como las modificaciones eran en un espacio aparte de variables no $ace falta des$acer. Simplemente se descartan estas variables#. Fase de escritura/confirmacin- Llegados a este punto aplicamos las actualizaciones de la transacci/n a la base de datos. Este protocolo necesita de marcas de tiempo de transacciones guardar las $oras de inicio ! terminaci/n de al menos una de las tres fases ! adem,s requiere que el sistema mantenga control sobre los conjuntos de lectura ! escritura de cada transacci/n. En la fase de validaci/n de la transacci/n 2 el protocolo comprueba que que 2 no interfiere en ninguna transacci/n confirmada ni en cualquier otra que actualmente est en su fase de validaci/n. La fase de validaci/n consiste por tanto en para toda otra transacci/n 2A comprobar que se cumplan alguna de estas condiciones- %. La transacci/n 2A completa su fase de escritura antes de que 2 inicie su fase de lectura. ). 2 inicia su fase de lectura despus de que 2A complete su fase de escritura ! el conjunto de lectura de 2 no tiene elementos en comn con el conjunto de escritura de 2A. +. @i el conjunto de lectura ni el conjunto de escritura de 2 tienen elementos en comn con el conjunto de lectura de 2A ! 2A completa su fase de lectura antes de que 2 complete su fase de lectura. M 4todos de control de concurrencia El control optimista es m,s r,pido ! permite ma!or grado de paralelismo al menos con cargas de trabajo bajas o medias. &ara cargas altas aumenta la probabilidad de que se produzca un conflicto ! las cancelaciones e intentos sucesivos causan un incremento apreciable del trabajo. %N