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

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

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

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

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

    לא ביקשתי שייצור מאגר, אם ככה היה נשמע זה ראיה טובה לזה שאני לא מכיר את go.
    מה שאמרתי שצריך להיות ככה
    --פתיחת חיבור
    ----תשאול
    --סגירת חיבור
    כל מקום ומקום שבשימוש. לגבי הבזבוז שבסגירה יש את ניהול הpool שאמרתי בבטחון שהוא לבטח קיים בgo (שזה אומר שהחיבור לא נסגר ומתי שפותחים חיבור חדש בעצם ייעשה בו שימוש חוזר).
    אני לא יודע איך בגו פותחים חיבור, ייתכן שזה אוטומטי כפי שאתה אומר אני לא יודע.
    ממילא אם השאלה של @nigun זה מה לעשות תכלס אני יענה לעבור לC# 🙂 כי אני לא מכיר go.

    י מנותק
    י מנותק
    יוסף בן שמעון
    כתב ב נערך לאחרונה על ידי
    #18

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

    nigunN תגובה 1 תגובה אחרונה
    1
    • י יוסף בן שמעון

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

      nigunN מנותק
      nigunN מנותק
      nigun
      כתב ב נערך לאחרונה על ידי
      #19

      @יוסף-בן-שמעון
      אז מה אני אמור לעשות?

      1. ליצור משתנה גלובלי
        2.לבצע פתיחה רק פעם אחת

      מייל: nigun@duck.com

      dovidD תגובה 1 תגובה אחרונה
      0
      • nigunN nigun

        @יוסף-בן-שמעון
        אז מה אני אמור לעשות?

        1. ליצור משתנה גלובלי
          2.לבצע פתיחה רק פעם אחת
        dovidD מנותק
        dovidD מנותק
        dovid
        ניהול
        כתב ב נערך לאחרונה על ידי
        #20

        @nigun תביא לי אתר שמסביר איך להשתמש בsql (עם דוגמאות עשירות ומפורטות ולא תיעוד) ואני אכתוב לך בדיוק מה לעשות.

        • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
        • בכל נושא אפשר ליצור קשר dovid@tchumim.com
        nigunN תגובה 1 תגובה אחרונה
        0
        • dovidD dovid

          @nigun תביא לי אתר שמסביר איך להשתמש בsql (עם דוגמאות עשירות ומפורטות ולא תיעוד) ואני אכתוב לך בדיוק מה לעשות.

          nigunN מנותק
          nigunN מנותק
          nigun
          כתב ב נערך לאחרונה על ידי
          #21

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

          מייל: nigun@duck.com

          dovidD תגובה 1 תגובה אחרונה
          0
          • nigunN nigun

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

            dovidD מנותק
            dovidD מנותק
            dovid
            ניהול
            כתב ב נערך לאחרונה על ידי
            #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
              • nigunN nigun

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

                י מנותק
                י מנותק
                יוסף בן שמעון
                כתב ב נערך לאחרונה על ידי
                #24

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

                nigunN תגובה 1 תגובה אחרונה
                0
                • י יוסף בן שמעון

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

                  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
                    • dovidD dovid

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

                      nigunN מנותק
                      nigunN מנותק
                      nigun
                      כתב ב נערך לאחרונה על ידי
                      #27

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

                      מייל: nigun@duck.com

                      תגובה 1 תגובה אחרונה
                      0
                      תגובה
                      • תגובה כנושא
                      התחברו כדי לפרסם תגובה
                      • מהישן לחדש
                      • מהחדש לישן
                      • הכי הרבה הצבעות


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

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

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