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

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

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

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

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

    אני בונה שרת בGO עם מסד נתונים MYSQL (עם הרבה קריאות בו זמנית)
    נראה לי שיש לי שתי אפשרויות

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

    מייל: nigun@duck.com

    תגובה 1 תגובה אחרונה
    1
    • ליבלל
      ליבלל
      ליבל
      כתב ב נערך לאחרונה על ידי
      #2

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

      mysqli_free_result($result)
      

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

      nigunN תגובה 1 תגובה אחרונה
      2
      • ליבלל ליבל

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

        mysqli_free_result($result)
        

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

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

        @ליבל
        בPHP אין שום רווח בלתפוס את הזכרון כי במילא זה לא נשמר בין הקריאות לשרת
        אבל בGO (ונראה לי שגם בנוד) אפשר לשמור נתון במשתנה ולהגיש אותו ללקוח מתוך הזכרון מאשר לקרוא מחדש כל פעם

        מייל: nigun@duck.com

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

          @nigun ההמלצה היא ליצור מאגר חיבורים ולהשתמש בו, חפש משהו כמו pool connection

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

            @nigun ההמלצה היא ליצור מאגר חיבורים ולהשתמש בו, חפש משהו כמו pool connection

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

            @יוסף-בן-שמעון
            מה אני עושה עם זה?
            https://github.com/go-sql-driver/mysql#connection-pool-and-timeouts

            מייל: nigun@duck.com

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

              @יוסף-בן-שמעון
              מה אני עושה עם זה?
              https://github.com/go-sql-driver/mysql#connection-pool-and-timeouts

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

              @nigun אם אני מבין נכון כתוב שם שזו ברירת המחדל של הדריבר והאו מנהל את המאגר, אתה רק מקצה משתנה גלובלי שמקבל את הערך מ sql.Open וזה מחזיק את המאגר

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

                @nigun אם אני מבין נכון כתוב שם שזו ברירת המחדל של הדריבר והאו מנהל את המאגר, אתה רק מקצה משתנה גלובלי שמקבל את הערך מ sql.Open וזה מחזיק את המאגר

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

                @יוסף-בן-שמעון
                אני יודע שאני יכול לעשות את זה (לכן שאלתי)
                השאלה היא מה ההשלכות?

                מייל: nigun@duck.com

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

                  בכל הכלים המודרניים שיש היום, יצירת קונקשיים חדש עושה שימוש בconnection pull שזה אוסף של קונקשנים מנוהל.

                  שימוש באותו חיבור למסד, עושה בעיות במקביליות ובטרנזקציות נדמה לי ועוד כמה דברים שאינני מבין בהם. אני לא מבין בהם כי אין צורך, אני לא ממציא את הגלגל ואם אומרים לי ליצור חיבור כל פעם (עם מנהל שמאחורי הקלעים ממחזר אם צריך) אני מסודר.
                  תשובה יפה בנושא הזה, במקרה שם זה על דוטנט: https://softwareengineering.stackexchange.com/a/398790/112215

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

                    בכל הכלים המודרניים שיש היום, יצירת קונקשיים חדש עושה שימוש בconnection pull שזה אוסף של קונקשנים מנוהל.

                    שימוש באותו חיבור למסד, עושה בעיות במקביליות ובטרנזקציות נדמה לי ועוד כמה דברים שאינני מבין בהם. אני לא מבין בהם כי אין צורך, אני לא ממציא את הגלגל ואם אומרים לי ליצור חיבור כל פעם (עם מנהל שמאחורי הקלעים ממחזר אם צריך) אני מסודר.
                    תשובה יפה בנושא הזה, במקרה שם זה על דוטנט: https://softwareengineering.stackexchange.com/a/398790/112215

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

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

                    מייל: nigun@duck.com

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

                      בכל הכלים המודרניים שיש היום, יצירת קונקשיים חדש עושה שימוש בconnection pull שזה אוסף של קונקשנים מנוהל.

                      שימוש באותו חיבור למסד, עושה בעיות במקביליות ובטרנזקציות נדמה לי ועוד כמה דברים שאינני מבין בהם. אני לא מבין בהם כי אין צורך, אני לא ממציא את הגלגל ואם אומרים לי ליצור חיבור כל פעם (עם מנהל שמאחורי הקלעים ממחזר אם צריך) אני מסודר.
                      תשובה יפה בנושא הזה, במקרה שם זה על דוטנט: https://softwareengineering.stackexchange.com/a/398790/112215

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

                      @dovid
                      פה יש דיון ארוך בנושא
                      אבל לא הבנתי את המסקנא כ"כ
                      מישהו יכול לסכם את הדיון שם.

                      מייל: nigun@duck.com

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

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

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

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

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

                          @dovid
                          נראה לי שאני מפספס משהו לפי מה שאני מבין מכאן ומכאן
                          כשאני קורא לOPEN
                          זה לא פותח את המסד נתונים אלא פותח את הבריכה (pool בלע"ז)
                          והם מביאים דוגמא איך להקים שרת HTTP עם פתיחה אחת
                          כנראה שאני מפספס משהו
                          אבל עדיין לא הבנתי מה אני אמור לעשות.
                          נ.ב. סליחה אם אני מטרטר אותך לשווא

                          מייל: nigun@duck.com

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

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

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

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

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

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

                              מייל: nigun@duck.com

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

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

                                dovidD
                                dovidD
                                dovid
                                ניהול
                                כתב ב נערך לאחרונה על ידי dovid
                                #15

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

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

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

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

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

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

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

                                    • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                                    • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                                    י תגובה 1 תגובה אחרונה
                                    2
                                    • 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

                                          שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.

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

                                          בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗

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


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

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

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