בדף הזה מוסבר איך להשתמש בבידוד של קריאות חוזרות ב-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 ועקביות חיצונית.