تخزين في Data Data VS Store في قاعدة بيانات SQL للبيانات المؤقتة

StackOverflow https://stackoverflow.com/questions/964476

سؤال

أنا أتساءل ما هو أكثر كفاءة، لتخزين البيانات المؤقتة (المتعلقة بهذه الجلسة) في جلسة تستخدم متغير $ _session في php أو المتجر والاسترجاع من قاعدة بيانات SQL؟

شكرا لوقتك.

هل كانت مفيدة؟

المحلول

ضع في اعتبارك أن متغير الجلسة مدعومة بآلية تخزين، أي، عند انتهاء الطلب من الجلسة مكتوب بواسطة معالج الجلسة، بشكل افتراضي، هذا هو ملف. في الطلب التالي، يتم سحبه مرة أخرى من هذا الملف (أو أي شيء آخر يستخدم معالج الجلسة).

إذا كنت تقرأ وكتابة هذه البيانات حول كل طلب، فستصتعلت فقط بمتغيرات $ _Session، والنفقات العامة للاتصال، والاستعلام وتحديث قاعدة البيانات لن تكون أسرع من $ _Sessions الافتراضي.

من المحتمل أن ترغب فقط في استخدام جلسة مدعومة بقاعدة بيانات إذا كنت تقوم بتشغيل خوادم متعددة التحميل وتحتاج إلى مشاركة بيانات الجلسة بينهما. في هذه الحالة، إذا وجدت النفقات العامة لجلسات قاعدة البيانات لتكون إبطاء موقعك على درجة ملحوظة، فقد تفكر في الالتصاق memcached بين خادم الويب وقاعدة البيانات.

نصائح أخرى

لا أعرف الكثير عن القراءة من قاعدة بيانات أو ملف، لكنني لا أعتقد أن "الوصول DB أبطأ من غيرها" صحيح. لقد تعلمت من دروس مدرستي التي تكون فيها كائنات الشبكة ضئيلة مقارنة بالوصول إلى الإدخال / الإخراج. وإذا نستخدم DB للجلسات، لدينا بعض المزايا:

ليس علينا أن نشعر بالقلق إزاء العديد من الخوادم لأنه لا يوجد نظام ملفات مختلفة.

أعتقد أيضا أن تخزين / قراءة شيء من أجل / من قاعدة بيانات أكثر أسهل من نظام الملفات.

أيضا، إذا كنا نستخدم الاستضافة المشتركة، فإن جلسات تخزين قاعدة البيانات هي ميزة كبيرة للأمان.

إذا كنت مخطئا، يرجى تصحيح لي. لا يزال لدي أشياء كثيرة لتعلمها. شكرا.

يعتمد ذلك بالفعل على حجم البيانات التي تنوي تخزينها ومقدار حركة المرور التي تنوي التعامل معها. إذا كانت البيانات ضئيلة ولا يحتاج الموقع إلى تجاوز خادم ويب واحد، فكل الوسائل استخدام معالج الجلسة الافتراضي الذي يكتب بيانات الجلسة في نظام الملفات في WebServer.

إذا كنت بحاجة إلى قياس مربع واحد، فمن المستحسن أن تخزن بيانات الجلسة الخاصة بك إلى قاعدة بيانات الذاكرة مثل قاعدة بيانات memcached أو العادية. يمكنك تجاوز معالج الجلسة في PHP واكتب التنفيذ الخاص بك لتخزينها إلى قاعدة البيانات عند استخدام $ _session.

يعتمد ما هو أكثر كفاءة على مقدار البيانات التي تريد تخزينها وما الذي تخطط للقيام به مع البيانات المؤقتة. لقد قمت في بعض الأحيان بتخزين 5 ميغس في بيانات الجلسة في تخزين الملفات وكانت قاتلة أداء فظيعة. لكن 5 ميجس من الدولة هو الكثير فظيعة ولا يجب أن تصل إلى هناك.

أي حال يمكنك تكوين جلسات PHP ليكون تخزينها في جدول قاعدة البيانات والحصول على أفضل ما في العالمين.

ومع ذلك، إذا كانت البيانات ليست مميزة بشكل صحيح جلسة مستخدم، فعليك عدم استخدام جلسات واستخدام كائن نموذجي بدلا من ذلك.

جلسات PHP أسرع من وصول DB. لكن جلسات PHP لديها بعض مشاكل معروفة.

قد ترغب في إلقاء نظرة على Memcached إذا كنت تريد أوقات وصول سريعة حقا، مع تجنب مقطورات إدارة جلسة PHP في نفس الوقت.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top