2010-07-11 20 views
7

उदाहरण के लिए, उपयोगकर्ता में लॉग इन करने की है, और सिस्टम उन्हें उदाहरण के बारे में जानकारियां भंडारण किया जाता है: birth date, तो सत्र से यह जानकारी प्राप्त करने के लिए तेजी से होता है, या इसके लिए डेटाबेस क्वेरी करने के लिए?डेटाबेस क्वेरी करने से सत्र तेजी से हैं?

मेरे विचार था, उपयोगकर्ता सिर्फ एक बार के लिए लॉग इन करने की जरूरत है कि और सत्र हमेशा वहाँ है, लेकिन अगर मैं डेटाबेस क्वेरी, तो अगर उपयोगकर्ता पृष्ठ को पुनः लोड, सिस्टम बार-बार क्वेरी करने के लिए, की जरूरत के बजाय होने का एक अस्थायी 'जगह' से डेटा।

मैं PHP और MySQL का उपयोग करता हूं।

+0

आप किस प्रोग्रामिंग भाषा और डीबीएमएस का उपयोग करते हैं? –

+0

मैंने अपना जवाब संपादित किया। – Adam

उत्तर

9

लगभग किसी भी भाषा और डेटाबेस के लिए, हाँ। एक उपयोगकर्ता सत्र आमतौर पर स्मृति में संग्रहीत होता है, और इसे पकड़ना सिर्फ इसे देखने का मामला है। एक डेटाबेस पहुंच में आमतौर पर एक अलग प्रक्रिया के साथ कुछ सॉकेट संचार शामिल होता है। तुलना में भारी भारी।

+2

जहां तक ​​मुझे पता है, PHP में सत्र डिफ़ॉल्ट रूप से फ़ाइलों में संग्रहीत हैं, स्मृति में नहीं। प्रत्येक हिट के लिए इस सत्र फ़ाइल को फाइल सिस्टम से पढ़ना होगा और PHP सरणी में पार्स किया जाना चाहिए। आप सही हैं, सत्र तेजी से होना चाहिए, लेकिन कारण यह है कि - आपको अन्य कारणों से उपयोगकर्ता के सत्र डेटा को लोड करना होगा और जिस बिर्टडे के बारे में वह बात कर रहा है वह पहले से ही होगा - डेटाबेस से पूछने की कोई आवश्यकता नहीं है। – dwich

1

आप यह सब कैसे कर रहे हैं? करने का तरीका लॉगिन पेज पर उपयोगकर्ता प्रमाण-पत्रों की जांच करना है और हां, आपको यह जांचने के लिए एक क्वेरी करना है कि उपयोगकर्ता निर्दिष्ट मानदंड डेटाबेस में मेल खाता है या नहीं। यदि वे करते हैं, तो आप उन्हें सत्र में संग्रहीत करते हैं और फिर आप उस सत्र के आधार पर जारी रखते हैं।

इसलिए, यह तुलना के बारे में नहीं है, आप लॉग इन पृष्ठ पर एक बार डेटाबेस क्वेरी और बाद में सत्र का उपयोग करने के बनाने के लिए किया है।

लॉगिन पृष्ठ

// database query run once only at this page 
// if user exits, you store it into session else redirect with an error message 
+0

मुझे पता है कि यह कैसे करना है, मेरा प्रश्न डेटाबेस क्वेरी से तेज़ था या नहीं :) – Adam

+1

@CIRK: बेशक, सत्र तेज़ है लेकिन फिर आपको सुरक्षा के लिए भी खाते हैं। – Sarfraz

+0

धन्यवाद सुरक्षा एक नया विषय है, इसे कहने के लिए धन्यवाद, मैंने एक नया प्रश्न बनाया है इसे जांचें: http: //stackoverflow.com/questions/3224286/php-what-are-the-risks-of-php- सत्र – Adam

0

वास्तव में, कार्ल के जवाब पूरी तरह से सही नहीं है, और "MySql" कह या तो मदद नहीं करता है।

आप देखते हैं, माइस्क्ल जैसे डेटाबेस सिस्टम में "स्टोरेज इंजन" हैं। ये आमतौर पर फाइलों को लिखते हैं, लेकिन कुछ ऐसे हैं जो स्मृति (स्मृति) को लिखते हैं, अन्य स्मृति मेमोरी लिखते हैं लेकिन फ़ाइल बैकअप (MyISAM) और कुछ को/dev/null (ब्लैकहोले) रखते हैं।

तो यह सब भंडारण इंजन पर निर्भर करता है:

  • MyISAM - MySQL 3 के रूप में डिफ़ॉल्ट इंजन।23 शानदार प्रदर्शन
  • स्मृति - आधारित हैश, अस्थायी तालिकाओं
  • InnoDB के लिए, स्मृति में संग्रहीत उपयोगी - लेन-देन तथा पृष्ठ-स्तरीय
  • ताला लगा का समर्थन करता है - लेन-देन, रो-लेवल लॉकिंग, और विदेशी कुंजी
  • BerkeleyDB का समर्थन करता है
  • ब्लैकहोल -/dev/बातिल भंडारण इंजन (कुछ भी आप इसे करने के बारे में गायब हो जाता है)
  • उदाहरण - उदाहरण भंडारण इंजन
  • संग्रह - पुरालेख भंडारण इंजन
  • सीएसवी - सीएसवी भंडारण इंजन
  • ndbcluster - क्लस्टर किया गया, गलती सहिष्णु, स्मृति के आधार पर तालिकाओं
  • संघीय - संघीय MySQL भंडारण इंजन
  • MRG_MYISAM - समान MyISAM तालिकाओं का संग्रह
  • ISAM - अप्रचलित भंडारण इंजन

(PhpMyAdmin Egines सूची से सूची)

+0

इसलिए यदि मैं 'स्मृति' का उपयोग करता हूं, तो यह 'सत्र' की तरह काम करेगा? – Adam

+0

यह "उत्तर" सर्वोत्तम रूप से पूरक है और प्रश्न को संबोधित नहीं करता है। – rvdavid

+0

@rvdavid - यह सवाल को संबोधित करता है, ओपी को सिर्फ एक विकल्प चुनना है। – Christian

संबंधित मुद्दे