हर बार जरूरत पड़ने पर डीबी कनेक्शन खोलना संसाधनों की बर्बादी है और यह धीमा है।
इसके बजाय, आपको एक sql.DB
बनाना चाहिए एक बार, जब आपका आवेदन शुरू होता है (या पहली मांग पर), और या तो इसे पास करें जहां इसकी आवश्यकता है (उदाहरण के लिए फ़ंक्शन पैरामीटर के रूप में या किसी संदर्भ के माध्यम से), या बस इसे एक वैश्विक चर बनाएं और इसलिए हर कोई इसे एक्सेस कर सकता है। एकाधिक गोरोइन से कॉल करना सुरक्षित है।
sql.Open()
. के दस्तावेज़ से उद्धरण :
लौटाया गया डीबी एकाधिक गोरोइन द्वारा समवर्ती उपयोग के लिए सुरक्षित है और निष्क्रिय कनेक्शन के अपने पूल को बनाए रखता है। इस प्रकार, ओपन फ़ंक्शन को केवल एक बार बुलाया जाना चाहिए। डीबी को बंद करना शायद ही कभी आवश्यक होता है।
आप एक पैकेज का उपयोग कर सकते हैं init()
इसे इनिशियलाइज़ करने के लिए फंक्शन:
var db *sql.DB
func init() {
var err error
db, err = sql.Open("yourdriver", "yourDs")
if err != nil {
log.Fatal("Invalid DB config:", err)
}
}
यहां एक बात ध्यान देने योग्य है कि sql.Open()
हो सकता है कि आपके डीबी से वास्तविक कनेक्शन न बने, यह केवल इसके तर्कों को मान्य कर सकता है। यह जांचने के लिए कि क्या आप वास्तव में डीबी से जुड़ सकते हैं, DB.Ping()
. का उपयोग करें , उदा.:
func init() {
var err error
db, err = sql.Open("yourdriver", "yourDs")
if err != nil {
log.Fatal("Invalid DB config:", err)
}
if err = db.Ping(); err != nil {
log.Fatal("DB unreachable:", err)
}
}