Sobes.tech
Junior — Middle

Կարող եք բացատրել, թե ինչ է նշանակում Phantom read-ը գործառնությունների և տվյալների բազաների համատեքստում?

sobes.tech AI

Պատասխան AI-ից

Ֆանտոմ ընթերցում — դա իրավիճակ է տրանզակցիաներում, երբ նույն հարցումը կրկին կատարելու ժամանակ, նոր տողեր են հայտնվում, որոնք առաջին ընթերցման ժամանակ տեսանելի չէին:

Օրինակ՝

  1. T1 տրանզակցիան կատարում է SELECT * FROM orders WHERE status = 'new' հարցումը և ստանում 5 գրանցում:
  2. Երբ T1 չի ավարտվել, այլ T2 տրանզակցիա ավելացնում է նոր գրանցում status = 'new' և հաստատում փոփոխությունները:
  3. Եթե T1 կրկնակի կատարի նույն հարցումը, նա արդեն կտեսնի 6 գրանցում՝ նոր տողը որպես "ֆանտոմ":

Ֆանտոմ ընթերցումը տեղի է ունենում, քանի որ հարցման պայմանին համապատասխան տողերի տիրույթը փոխվել է երկու ընթերցումների միջև:

Ֆանտոմ ընթերցումը կանխելու համար օգտագործվում է SERIALIZABLE մեկուսացման մակարդակը, որը փակվում է տվյալների տիրույթները և կանխում է նոր տողերի հայտնվելը ընթերցումների միջև: READ COMMITTED կամ REPEATABLE READ մակարդակներում ֆանտոմներ կարող են առաջանալ։