Ako môžem dosiahnuť situáciu, keď riadky čítané jednou transakciou nemôžu byť prečítané inou transakciou?
Z jedného z mojich tabuliek so stĺpcom A-F musím vybrať max(columnA)
, S maximálnou hodnotou a na základe nejakého výpočtu budem musieť vykonať ďalšie príkazy vloženia.
S úrovňou serializovateľnej izolácie čítajú dve transakcie rovnakú maximálnu hodnotu. Výsledkom je zámok čakať na jednu transakciu a zablokovať druhú transakciu.
odpovede:
0 pre odpoveď č. 1Možno to nebudete môcť vyriešiť len na základe izolácie.
Zmena dizajnu, ktorú by ste mohli urobiť, je uložiťmaximálnu hodnotu samostatne a majú trojstupňový príznak spolu so záznamom - maximálna hodnota spracovaná, spracovaná a nespracovaná. Takže vždy, keď transakcia číta maximálnu hodnotu z tabuľky, môže skontrolovať, či sa max hodnota už spracováva. Ak áno, nevykoná to ostatné príkazy vloženia.