עדכון כבר על טבלה

noamways

New member
עדכון כבר על טבלה

בוקר טוב, יש לי בסיס נתונים MSSQL2005 שתחתיו יושב אתר גדול ופעיל לכל אורך שעות היממה. עלי לבצע על אחת מהטבלאות בו עדכון של שדה מסוים ואני יודע שפעולה כזו כרוכה בהפסקת פעילות האתר. האם יש סיכוי לבצע עדכון כלשהו בטבלה בלי שזה יפגע בזמן אמת בגולשים עצמם? יש רעיונות?
 
למה שיפריע?

אם העדכון מספיק מהיר, זה לא יפריע לאף אחד. ברור שהייתי עושה את זה בשעות שבהן _יחסית_ האתר פחות עמוס, אבל בעלי אתרים משנים מבנה מדי פעם, לא צריך להוריד את האתר בשביל זה. אתה גם יכול ליצור עותק גיבוי במחשב שלך, ולעשות סימולציה, ותראה כמה זמן זה לוקח.
 

noamways

New member
אני יודע כמה זמן זה לוקח

הבעיה היא שאני גם יודע שזה 5 דקות יפריע לגלישה באתר. השאלה היא האם יש טכניקות לבצע עדכונים כאלה בלי לפגוע בכלל בגולשים?
 
לבצע את העדכון בbatches

על תבצע את העידכון על כל הטבלה בבת אחת. תכתוב לך script קצר, שמבצע לולאה. בתוך הלולאה, תעדכן כל פעם חלק מהרשומות (למשל 1000 רשומות בכל עדכון). בצורה כזאת הטבלה לא תינעל, וכל פעם יינעלו רק הרשומות, שמתעדכנות.
 

noamways

New member
תודה אבל זה כמובן לא תופס אם אני

רוצה לעדכן את השדה להיות varchar מ - text? נכון?
 
כאן כבר לא מדובר על עדכון

שמדברים על עדכון, מדברים על שינוי נתונים. במקרה שלך אתה מדבר על שינוי מבנה טבלה. במקרה כזה לא ניתן כמובן לבצע שינוי על חלק מהטבלה. דרך אגב, מאחר שאתה עובד עם SQL Server 2005, עדיף לך לעבוד עם varchar(max) ולא עם text.
 

noamways

New member
כן זה בדיוק מה שהחלטתי לעשות

ובגלל זה נוצרה לי הבעיה הזאת. אני צריך להתחיל לעדכן את כל השדות
 

24sharon

New member
כמה זמן לא גלשת בתפוז....

מידי פעם (בתדירות לא נמוכה בכלל) מקבלים קבלת פנים נחמדה של... נסה יותר מאוחר או התגלתה שגיאה ועוד הרבה על הצד הזה. שינוי בטבלה 1/2 שעה בשעות שהגלישה נמוכה יחסית זה לא כ"כ נורא לדעתי. יעמדו בזה הגולשים
גמר חתימה טובה.
 

noamways

New member
יש בזה משהו לגבי תפוז

אבל כאשר יש לך אלפי לקוחות שהפרנסה שלהם תלויה בשרותים שאתה נותן אתה לא יכול להיות חובבן כמו תפוז. אם תפוז היו באמת רציניים אז היה להם שרת של בסיס נתונים נוסף שיטפל בלקוחות עד שהעדכון על הבסיס נתונים הרגיל יעבור. ברור שזה מה שאני אעשה כרגע (תקציב כמובן) אבל השאיפה היא לפתור את זה. תחשוב שגוגל היו עוצרים לחצי שעה
 

Ice Age

New member
תלוי כמה זה חשוב לך וכמה אתה

מוכן להשקיע. אתה יכול: 1. ליצור טבלה בצד עם המבנה החדש 2. להעביר אליה את הנתונים 3. לפתוח טרנזקציה 4. להעביר את השינויים מאז תהליך 2 5. לשנות את שם הטבלה 6. לסיים טרנזקציה תהליכים 4-5 הם קצרים מאוד, עם תכנון נכון הם יכולים להתבצע בתוך טרנזקציה שתיקח פחות מ-30 שניות (תלוי כמובן בכמות השינויים בשרת) ואז לכל היותר תהיה איטיות באתר למשך כחצי דקה.
 

noamways

New member
אחלה רעיון, הבעיה תתחיל עם לטבלה

הזו יש קשר עם מספר טבלאות אחרות או שיש VIEW שמשתמשים בשם שלה ואז התהליך קצת יותר מורכב. אבל בכל מקרה אחלה רעיון! דרך אגב, שכפול טבלה נועל את הבסיס נתונים או שרק לוקח מהכוח שלו?
 

Ice Age

New member
את השינוי של ה-Views

גם אפשר להכניס לתוך הטרנזקציה. זה לוקח אפס זמן. כמובן שאתה צריך להכין הכל מראש. אם אתה מתכוון ליצירת טבלה חדשה, זה לא נועל את בסיס הנתונים אלא רק טבלאות מערכת לזמן קצר מאוד ולא משפיע. ההעתקה עצמה נועלת חלקים מהטבלה ממנה אתה שולף, וכמובן יכול להאיט את ביצועי המערכת, תלוי בגדלים. כמה שורות יש לך בטבלה?
 

noamways

New member
קרוב ל - 30000 אבל הבעיה

בטבלה הזו זה לא מספר הרשומות אלא המשקל של הנתונים שלה. היא שוקלת 1.5GB
 

א ו ר ח ת

New member
תקום ב 3 לפנות בוקר וחמש דקות

5 דקות לא יזיקו לאף אחד אם יהיה רשום ב 3 בלילה , "האתר בעדכון , איתכם הסליחה, צוות בלה בלה."
 

Admini

New member
לא ממש שרתים

מחשבים בייתיים שהם קנו לפי משקל...
 
למעלה