In de laatste tutorial hebben we Conflict Serializability geleerd. In dit artikel zullen we een ander type serialisatie bespreken, dat bekend staat als View Serializability .
Wat is View Serializability?
Serialiseerbaarheid bekijken is een proces om erachter te komen dat een bepaald schema serieel te bekijken is of niet.
Om te controleren of een bepaald schema serienummerbaar is, moeten we controleren of het gegeven schema equivalent is aan het seriële schema. Laten we een voorbeeld nemen om te begrijpen wat ik daarmee bedoel.
Gegeven schema:
T1 T2 ----- ------ R (X) W (X) R (X) W (X) R (Y) W (Y)R (Y) W (Y)
Serieel schema van het bovenstaande schema:
Zoals we weten, wordt in een seriële planning een transactie alleen gestart als de huidige lopende transactie is voltooid. Dus het seriële schema van het bovenstaande schema zou er als volgt uitzien:
T1 T2 ----- ------ R (X) W (X) R (Y) W (Y) R (X) W (X) R (Y) W (Y)
Als we kunnen bewijzen dat het gegeven schema View Equivalent is aan het seriële schema, wordt het gegeven schema view Serializable genoemd .
Waarom hebben we View Serializability nodig?
We weten dat een serieel schema de database nooit inconsistent laat omdat er geen gelijktijdige transacties worden uitgevoerd. Een niet-serieel schema kan de database echter in inconsistente toestand achterlaten omdat er meerdere transacties tegelijkertijd worden uitgevoerd. Door te controleren of een bepaald niet-serieel schema serienummerbaar is, zorgen we ervoor dat het een consistent schema is.
Je vraagt je misschien af in plaats van te controleren of een niet-serieel schema serieel kan worden gemaakt of niet, kunnen we niet altijd een serieel schema hebben? Het antwoord is nee, omdat gelijktijdige uitvoering van transacties de systeembronnen volledig gebruikt en aanzienlijk sneller is in vergelijking met seriële schema's.
Bekijk Equivalent
Laten we leren hoe te controleren of de twee schema's weergave-equivalent zijn.
Van twee schema's T1 en T2 wordt gezegd dat ze weergave-equivalent zijn, als ze aan alle volgende voorwaarden voldoen:
1. Eerste lezing : de eerste lezing van elk gegevensitem in transacties moet in beide schema's overeenkomen. Als transactie T1 bijvoorbeeld een gegevensitem X leest vóór transactie T2 in schema S1, moet T1 in schema S2 X lezen vóór T2.
Lezen versus eerste lezen: u kunt in de war raken door de term eerste lezen. Hier betekent initieel lezen de eerste leesbewerking op een data-item, bijvoorbeeld, een data-item X kan meerdere keren in een schema worden gelezen, maar de eerste leesbewerking op X wordt de initiële read genoemd. Dit zal duidelijker worden zodra we het voorbeeld in het volgende gedeelte van dit zelfde artikel krijgen.
2. Laatste schrijfbewerking: Laatste schrijfbewerkingen voor elk gegevensitem moeten overeenkomen in beide schema's. Een gegevensitem X wordt bijvoorbeeld voor het laatst geschreven door transactie T1 in schema S1 en vervolgens in S2 moet de laatste schrijfbewerking op X worden uitgevoerd door transactie T1.
3. Update lezen: als in schema S1 de transactie T1 een gegevensitem leest dat is bijgewerkt door T2, dan moet in schema S2 de waarde na de schrijfbewerking van T2 op hetzelfde gegevensitem worden gelezen. In schema S1 voert T1 bijvoorbeeld een leesbewerking uit op X na de schrijfbewerking op X door T2 en vervolgens in S2, zou T1 de X moeten lezen nadat T2 schrijven op X uitvoert.
Serialiseerbaar bekijken
Als een schema een weergave is die equivalent is aan het seriële schema, dan wordt gezegd dat het gegeven schema View Serializable is. Laten we een voorbeeld nemen.
Serializable-voorbeeld bekijken
Laten we de drie voorwaarden voor serialisering van de weergave controleren:
Eerste lezing
In schema S1 leest transactie T1 eerst het gegevensitem X. In S2 leest ook transactie T1 eerst het gegevensitem X.
Laten we controleren op Y. In schema S1 leest transactie T1 eerst het gegevensitem Y. In S2 wordt ook de eerste leesbewerking op Y uitgevoerd door T1.
We hebben beide gegevensitems X Y gecontroleerd en aan de initiële leesvoorwaarde is voldaan in S1 S2.
Laatste schrijven
In schema S1 wordt de laatste schrijfbewerking op X uitgevoerd door transactie T2. In S2 voert ook transactie T2 de laatste schrijfactie uit op X.
Laten we controleren op Y. In schema S1 wordt de laatste schrijfbewerking op Y uitgevoerd door transactie T2. In schema S2 wordt het laatste schrijven op Y gedaan door T2.
We hebben beide gegevensitems X Y gecontroleerd en aan de laatste schrijfvoorwaarde is voldaan in S1 S2.
Update lezen
In S1 leest transactie T2 de waarde van X, geschreven door T1. In S2 leest dezelfde transactie T2 de X nadat deze is geschreven door T1.
In S1 leest transactie T2 de waarde van Y, geschreven door T1. In S2 leest dezelfde transactie T2 de waarde van Y nadat deze is bijgewerkt door T1.
Aan de update-leesvoorwaarde is ook voldaan voor beide schema's.
Resultaat: Omdat in dit voorbeeld aan alle drie voorwaarden is voldaan die controleren of de twee schema's weergave-equivalent zijn, wat betekent dat S1 en S2 weergave-equivalent zijn. Omdat we weten dat het schema S2 het seriële schema van S1 is, kunnen we dus zeggen dat het schema S1 een serienummerbaar schema is.
Laat een reactie achter