ما هي الملفات المسطحة الأسرع أم قاعدة بيانات MySQL RAM؟

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

سؤال

أحتاج إلى طريقة بسيطة لتشغيل العديد من نصوص PHP النصية لمشاركة البيانات.

هل يجب علي إنشاء قاعدة بيانات MySQL باستخدام محرك تخزين ذاكرة الوصول العشوائي (RAM) ومشاركة البيانات عبر ذلك (هل يمكن لبرامج نصية متعددة الاتصال بنفس قاعدة البيانات في وقت واحد؟)

أم أن الملفات المسطحة التي تحتوي على جزء واحد من البيانات في كل سطر ستكون أفضل؟

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

المحلول

ملفات مسطحة؟لااا...

استخدم محرك قاعدة بيانات جيد (MySQL، SQLite، إلخ).ثم، للحصول على أقصى قدر من الأداء، استخدم memcached to مخبأ محتوى.


بهذه الطريقة، لديك سهولة وموثوقية مشاركة البيانات بين العمليات باستخدام برنامج خادم مثبت يتعامل مع التزامن، وما إلى ذلك...لكنك تحصل على سرعة تخزين بياناتك مؤقتًا.

ضع في اعتبارك بعض الأشياء:

  1. يحتوي MySQL على ذاكرة تخزين مؤقت للاستعلام.إذا كنت تقوم بإصدار نفس الاستعلامات بشكل متكرر، فيمكنك الحصول على الكثير من الأداء دون إضافة طبقة تخزين مؤقت.
  2. MySQL سريع حقًا على أي حال.هل قمت باختبار التحميل لإثبات أنه ليس بالسرعة الكافية؟

نصائح أخرى

يرجى عدم استخدام الملفات مسطح، لالتعقل من مشرفون.

إذا كنت تبحث فقط الحصول على بيانات المشترك، في أسرع وقت ممكن، ويمكنك الاحتفاظ بها كلها في ذاكرة الوصول العشوائي، ثم <وأ href = "http://www.danga.com/memcached/" يختلط = " نوفولو noreferrer "> أعطها هو الحل الأمثل.

إذا كنت تريد استمرار البيانات، ثم استخدام نظم إدارة قواعد البيانات، مثل الخلية.

وعموما، DB هو أفضل، ومع ذلك، إذا كنت تشارك، كمية معظمها ثابت صغيرة من البيانات، قد تكون هناك مزايا الأداء (والبساطة) للقيام بذلك مع ملفات مسطح.

وأي شئ بخلاف تبادل البيانات تافهة وأود أن اختيار DB ذلك.

1- حيث يمكن أن يكون الملف المسطح مفيدًا:يمكن أن يكون الملف المسطح أسرع من قاعدة البيانات، ولكن في تطبيقات محددة جدًا.تكون أسرع إذا تمت قراءة البيانات من البداية إلى النهاية دون أي بحث أو كتابة.إذا كانت البيانات لا تتناسب مع الذاكرة وتحتاج إلى قراءتها بالكامل لإنجاز المهمة، فيمكن أن تكون أسرع من قاعدة البيانات.أيضًا، إذا كان هناك الكثير من الكتابة أكثر من القراءة، فإن الملف المسطح يتألق أيضًا، ستحتاج معظم إعدادات قواعد البيانات الافتراضية إلى جعل استعلامات القراءة تنتظر انتهاء الكتابة من أجل الحفاظ على الفهارس والمفاتيح الخارجية.عادةً ما يكون جعل استعلامات الكتابة أبطأ من القراءات البسيطة.

نسخة TD/LR:استخدم الملفات الثابتة للنظام القائم على الوظائف (المعروف أيضًا باسم تحليل السجلات البسيط)، وليس لاستعلامات البحث على الويب.

2- سقوط حفرة الملفات المسطحة :إذا كنت تستخدم ملفًا ثابتًا، فستحتاج إلى مزامنة البرامج النصية الخاصة بك عند تغيير الملف باستخدام آلية القفل المخصصة.مما قد يؤدي إلى التباطؤ والفساد حتى القفل الميت إذا كان لديك خطأ.

3- قاعدة بيانات تعتمد على الرام؟تحتوي معظم قواعد البيانات على ذاكرة تخزين مؤقت لنتائج الاستعلام، وفهارس البحث، مما يجعل من الصعب جدًا التغلب عليها باستخدام ملف ثابت.نظرًا لأنها تخزن مؤقتًا في الذاكرة، فإن تشغيلها بالكامل من الذاكرة يكون في أغلب الأحيان غير فعال وخطير.من الأفضل ضبط تكوين قاعدة البيانات بشكل صحيح.

إذا كنت تتطلع إلى تحسين الأداء باستخدام ذاكرة الوصول العشوائي، فسأفكر أولاً في تشغيل نصوص PHP وصفحات html والصور الصغيرة من محرك أقراص RAM.حيث من المرجح أن تكون آلية ذاكرة التخزين المؤقت بدائية وتضرب القرص الصلب بشكل منهجي لعدم تغيير البيانات الثابتة.

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

5- هل يمكن لبرامج نصية متعددة الاتصال بنفس قاعدة البيانات في وقت واحد؟

نعم، ويسمى تجمع الاتصال.في php (جانب العميل)، تكون وظيفة فتح اتصال هي mysql-pconnect(http://php.net/manual/en/function.mysql-pconnect.php).يمكنك تكوين الحد الأقصى للاتصال المفتوح في php.ini على ما أعتقد.يحدد الإعداد المماثل من جانب خادم mysql الحد الأقصى لاتصالات العميل المتزامنة في /etc/mysql/my.cnf.

يجب عليك القيام بذلك للاستفادة من العمليات المتوازية لوحدة المعالجة المركزية وتجنب انتظار برنامج php للاستعلام حتى انتهاء بعضها البعض.إنه يزيد الأداء بشكل كبير تحت الحمل الثقيل.

يوجد أيضًا تجمع اتصال/تجمع مؤشرات ترابط واحد في تكوين Apache لعملاء الويب العاديين.راجع httpd.conf.

آسف لجدار النص، كان بالملل.لويس.

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

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

وأود أن أقول أن الخلية DB سيكون الخيار الأفضل إلا إذا كان لديك بعض آلية للتعامل مع أقفال على الملفات مسطح (وبعض وسيلة للتحكم في الوصول). في هذه الحالة طبقة DB (بغض النظر عن DBMS معينة) بمثابة طبقة المراوغة، مما يتيح لك لا تقلق بشأن ذلك.

ومنذ OP لا يحدد خادم الويب (وPHP الواقع يمكن تشغيلها من سطر الأوامر) ثم أنا لست على يقين من أن تقنيات التخزين المؤقت هي ما كنت بعد هنا. وOP يمكن ان يقوم به نوعا من الطيران البيانات تحويل غير مدفوعة على شبكة الإنترنت. من يدري.

وإذا كان النظام الخاص بك يحتوي على مخبأ PHP (أي مخابئ ترجمة التعليمات البرمجية PHP في الذاكرة، مثل APC)، حاول وضع بياناتك في ملف PHP، كرمز PHP. إذا كان لديك لكتابة البيانات، وهناك بعض القضايا الأمنية.

<اقتباس فقرة>   

وأنا بحاجة إلى وسيلة بسيطة لمتعددة   تشغيل البرامج النصية PHP لتبادل البيانات.

APC ، وأعطها كلاهما خيارات جيدة اعتمادا على السياق. قد يكون الذاكرة المشتركة أيضا خيار.

<اقتباس فقرة>   

وأود أن إنشاء الخلية DB مع RAM   مشغل التخزين، وتبادل البيانات عبر   أن (يمكن مخطوطات متعددة تتصل   نفس DB في وقت واحد؟)

وهذا هو أيضا خيار لائق، ولكن ربما لن يكون بالسرعة APC أو أعطها.

<اقتباس فقرة>   

وأم أن الملفات مسطحة مع قطعة واحدة من   البيانات في كل سطر يكون أفضل؟

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

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

ومناولة يكتب المتزامنة والتطبيقات السبب مثل الخلية وأعطها موجودة.

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