בדף הזה מוסבר איך להשתמש בבידוד של קריאות חוזרות ב-Spanner.
'קריאה חוזרת' היא רמת בידוד שמבטיחה שכל פעולות הקריאה בתוך עסקה יראו תמונת מצב עקבית של מסד הנתונים כפי שהיה בתחילת העסקה. ב-Spanner, רמת הבידוד הזו מיושמת באמצעות טכניקה שנקראת גם בדרך כלל בידוד snapshot. הגישה הזו מועילה בתרחישים של קריאה וכתיבה בו-זמנית, שבהם מספר רב של עסקאות קוראות נתונים שעשויים להשתנות על ידי עסקאות אחרות. השימוש בתמונת מצב קבועה מאפשר לקריאה חוזרת להימנע מההשפעות על הביצועים שמאפיינות את רמת הבידוד המחמירה יותר, שניתנת לסריאליזציה. בגלל שהמערכת משתמשת במקביל אופטימי כברירת מחדל, פעולות קריאה יכולות להתבצע בלי שהמערכת תנעל את הנתונים ובלי לחסום פעולות כתיבה מקבילות. כתוצאה מכך, יכול להיות שיהיו פחות עסקאות שבוטלו ויהיה צורך לנסות לבצע אותן שוב בגלל התנגשויות בסדר הפעולות. במקביליות פסימית, פעולות קריאה משתמשות בתמונות מצב, אבל נעילות בלעדיות חלות על נתונים שנקראים משאילתות FOR
UPDATE או מרמזים lock_scanned_ranges=exclusive, ועל נתונים שנכתבים באמצעות שאילתות DML. בו-זמניות פסימית גם מפחיתה את הסבירות להתנגשויות מסוג כתיבה-כתיבה. מידע נוסף זמין במאמרים סקירה כללית על רמת הבידוד ובקרת בו-זמניות.
הגדרת רמת הבידוד
אפשר להגדיר את רמת הבידוד בעסקאות קריאה-כתיבה ברמת הלקוח של מסד הנתונים או ברמת העסקה באמצעות השיטות הבאות:
ספריות לקוח
המשך
Java
Node.js
Python
C++
C#
PHP
Ruby
REST
אפשר להשתמש ב-TransactionOptions.isolation_level API בארכיטקטורת REST כדי להגדיר את רמת הבידוד בעסקאות קריאה-כתיבה וקריאה בלבד ברמת העסקה. האפשרויות התקפות הן TransactionOptions.SERIALIZABLE ו-TransactionOptions.REPEATABLE_READ. כברירת מחדל, Spanner מגדיר את רמת הבידוד לבידוד ניתן לסידור.
אפשר להשתמש בדרייברים של Spanner כדי להגדיר את רמת הבידוד ואת מצב נעילת הקריאה כפרמטר חיבור ברמת החיבור או כאפשרות של הצהרה ברמת העסקה.SET מידע נוסף על כל דרייבר זמין במאמר סקירה כללית של דרייברים.
אפשר גם להגדיר את רמת המקביליות של הנעילה לכל רמת בידוד. מידע נוסף מופיע במאמר בנושא בקרת בו-זמניות.
תרחישי שימוש שלא נתמכים
- אי אפשר להגדיר בידוד קריאה חוזרת בעסקאות DML עם חלוקה למחיצות.
- כל העסקאות לקריאה בלבד כבר פועלות בתמונת מצב קבועה ולא נדרשים נעילות, ולכן הגדרת בידוד קריאה חוזרת בסוג העסקה הזה לא משנה את ההתנהגות.
- אי אפשר להגדיר בידוד של קריאה חוזרת בפעולות של קריאה בלבד, שימוש חד-פעמי וחלוקה למחיצות באמצעות ספריות הלקוח של Spanner. בספריות הלקוח של Spanner לא תהיה אפשרות להגדיר בידוד של קריאה חוזרת בפעולות של קריאה בלבד, שימוש חד-פעמי ושאילתות של חלוקה למחיצות.
המאמרים הבאים
מידע נוסף על סריאליזציה של Spanner ועקביות חיצונית זמין במאמר TrueTime ועקביות חיצונית.