דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. פתיחת מסד נתונים בכל קריאה

פתיחת מסד נתונים בכל קריאה

מתוזמן נעוץ נעול הועבר תכנות
27 פוסטים 4 כותבים 351 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • nigunN מנותק
    nigunN מנותק
    nigun
    השיב לdovid ב נערך לאחרונה על ידי
    #21

    @dovid
    אלו טובים?
    http://go-database-sql.org/accessing.html
    https://www.alexedwards.net/blog/organising-database-access

    מייל: nigun@duck.com

    dovidD תגובה 1 תגובה אחרונה
    0
    • dovidD מנותק
      dovidD מנותק
      dovid ניהול
      השיב לnigun ב נערך לאחרונה על ידי
      #22

      @nigun כן.
      לפי מה שכתוב לך אין לך בכלל פתיחת קונקשיין.
      הdb.Open לא יוצר קונקשיין אלא סה"כ מקים מופע שנועד מטבעו להיות בעל חיים ארוכים ולא אמורים לסגרו (שם הוא סוגר אותו עם defer כשהתוכנית תיגמר). המופע הזה יכול להיות אחד לכל התוכנה כמו ש@יוסף-בן-שמעון אמר.
      מה עם קונקשנים? זה נראה שמנהלים לך את זה מצויין מאחורי הקלעים (יש לזה חיסרון קצת כי אם אני מבין טוב אתה לא יכול להבטיח ששתי פקודות ירוצו על אותו קונקשיין) ובעצם כל קריאה לQuery מחזיקה קונקשיין שנסגר בrows.Close().
      אז סיכמנו: var db *sql.DB אחד לכל האפליקציה.

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

      תגובה 1 תגובה אחרונה
      2
      • nigunN מנותק
        nigunN מנותק
        nigun
        כתב ב נערך לאחרונה על ידי
        #23

        שוב למדתי בדרך הקשה שצריך לקרוא דוקומנטיצות מהתחלה לסוף
        בגלל שלא ידעתי בדיוק איך מתנהל הסשנים בGO
        הגעתי מהר מאוד לSQL Error 1040: Too Many Connection
        אחרי שקראתי את המדריך שהבאתי למעלה הייתי צריך לעשות שינויים גדולים בקוד בשביל לתקן את זה
        (מזל שהרצתי בדיקת עומסים)

        מייל: nigun@duck.com

        י תגובה 1 תגובה אחרונה
        0
        • י מנותק
          י מנותק
          יוסף בן שמעון
          השיב לnigun ב נערך לאחרונה על ידי
          #24

          @nigun פרט הרחב נמק

          nigunN תגובה 1 תגובה אחרונה
          0
          • nigunN מנותק
            nigunN מנותק
            nigun
            השיב ליוסף בן שמעון ב נערך לאחרונה על ידי
            #25

            @יוסף-בן-שמעון
            א. קראתי לבקשת INSERT עם Query ולא עם exec
            כיוון שאני לא צריך את הפלט זה מבזבז נתונים, כי הוא יוצר פלט וזה משאיר את החיבור פתוח ליותר זמן
            ב. במקרה של שגיאה עשיתי return בלי פקודה נוספת לrows.Close()
            מה שגרם לחלק מהבקשות להישאר פתוח משום מה.
            ולמדתי שמומלץ לזרוק הרבה Close כי אם לא יועיל לא יזיק
            ג. למדתי שעדיף באופן כללי להכין את הבקשה עם Prepare ולעשות עליו כמה בקשות
            (במקרה שלי כל בקשה נמצא בתוך פונקציה נפרדת כך שוויתרתי על זה כי זה מידי הרבה עבודה לבנות את כל הפונקציות מחדש)
            ד. למדתי שאם בקשה אמורה לקבל רק שורה אחת משתמשים בQueryRow ולא בQuery
            יש עוד כמה דברים שלא ירדתי לעומקם עדיין למשל ניהול ערכים רקים (NULL)

            מייל: nigun@duck.com

            תגובה 1 תגובה אחרונה
            1
            • dovidD מנותק
              dovidD מנותק
              dovid ניהול
              כתב ב נערך לאחרונה על ידי
              #26

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

              מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

              בכל נושא אפשר ליצור קשר dovid@tchumim.com

              nigunN תגובה 1 תגובה אחרונה
              0
              • nigunN מנותק
                nigunN מנותק
                nigun
                השיב לdovid ב נערך לאחרונה על ידי
                #27

                @dovid
                אני לא יודע למה אבל כשהרצי מאות בקשות בלי לזרוק סגירה בכל מקום נתקעתי עם Too Many Connection
                ועכשיו זה כבר לא קורה

                מייל: nigun@duck.com

                תגובה 1 תגובה אחרונה
                0

                • 1
                • 2
                בא תתחבר לדף היומי!
                • התחברות

                • אין לך חשבון עדיין? הרשמה

                • התחברו או הירשמו כדי לחפש.
                • פוסט ראשון
                  פוסט אחרון
                0
                • דף הבית
                • קטגוריות
                • פוסטים אחרונים
                • משתמשים
                • חיפוש
                • חוקי הפורום