עבור לתוכן

c# | יעילות בחיבור לMSSQL

Featured Replies

פורסם

היי,

נניח שיש לי פונקציה שמקבלת נתונים (stringים) וחיבור לבסיס נתונים (OleDbConnection).

הפונקציה פותחת חיבור (OleDbConnection.open()) ואז כותבת לתוך ה-DB נתונים בעזרת OleDbCommand וExecuteNonQuery.

כמובן שבסוף הכתיבה הפוקנציה סוגרת את החיבור.

ועכשיו אני קורא לפונקציה הזאת המון פעמים מכל מיני מקומות בתוכנה

האם עדיין יהיה שימוש בConnection pool? או שבכל פעם שאני קורא לפונקציה הוא יפתח חיבור מחדש כי זה כבר לא אותו block?

יש דרך חכמה יותר לעשות את זה? כדאי נניח לכתוב דברים ל-XML ולעשות תהליך אחר שאחת ל-X זמן יטען את כל הXMLים?

נערך על-ידי TheAnthrax

פורסם
כדאי נניח לכתוב דברים ל-XML

now you have two problems.

פורסם
  • מחבר

חח אני אבין שזה אומר "לא".

אוקיי - ובכל זאת:

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

אין משהו שאפשר לעשות כדי להקל על חייו?

ב-stackOverFlow מציעים לעשות bulk.

אבל בשביל זה אני צריך לאגור את המידע באופן זמני איפשהו (ואז להעלות אותו במאוחד).

איך?

פורסם

bulk בא לחסוך ריבוי insert רגיל.

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

יש לך שתי אפשרויות:

א. להחזיק חיבור פתוח, במשתנה סטטי למשל.

ב. להשתמש עם DataTable (למה XML?) ולשמור אותה אותה בפרק זמן/כמות רשומות קצוב.

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

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

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

נערך על-ידי מולטיפרוסס

ארכיון

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

דיונים חדשים