it-swarm.asia

MySql وجهات النظر الأداء

إذا كنت تسير في طريق استخدام طرق العرض ، فكيف يمكنك ضمان الأداء الجيد؟

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

60
Ed Heal

هذا يعتمد.

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

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

مزايا وجهات النظر:

  1. عرض البيانات دون تخزين البيانات في الكائن.
  2. إعادة تحديد طريقة عرض الجدول ، أي أنه يمكن إخفاء بعض الأعمدة في الجداول.
  3. انضم إلى جدولين أو أكثر وأظهره ككائن واحد للمستخدم.
  4. حدد وصول الجدول حتى لا يتمكن أي شخص من إدراج الصفوف في الجدول.

انظر هذه الروابط المفيدة:

  1. أداء VIEW مقابل عبارة SQL
  2. هل طريقة العرض أسرع من استعلام بسيط؟
  3. Mysql VIEWS vs. PHP query
  4. هل MySql المشاهدات ديناميكية وفعالة؟
  5. عرض ملموس مقابل الجداول: ما هي المزايا؟
  6. هل الاستعلام عبر طريقة عرض أبطأ من تنفيذ SQL مباشرة؟
  7. حلاً لمشاكل الأداء طرق العرض TEMPTABLE
  8. انظر مكاسب الأداء باستخدام طرق العرض المفهرسة في SQL Server
89
Somnath Muluk

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

بشكل عام ، استخدم طرق العرض لإظهار جانب مختلف من الجدول. على سبيل المثال ، في جدول الموظفين ، أريني المديرين أو أخفي حقل الراتب من غير موظفي الموارد البشرية. تأكد أيضًا دائمًا من تشغيل EXPLAIN على الاستعلام وعرضه لفهم ما يحدث داخل MySQL تمامًا.

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

7
Namphibian

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

6
GDP

فيما يلي ملخص للدكتور ، يمكنك العثور على تقييمات مفصلة من بيتر زايتسيف ومن أي مكان آخر.

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

من الأفضل تجنبها فقط ، والحفاظ على استفساراتك في الشفرة.

6
Jay Paroline

هناك شيء لم يتم ذكره حتى الآن ولكن إحداث فرق كبير هو فهرسة كافية لوجهات النظر ' source tables .

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

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

سواء تم فهرسة الأعمدة التي تم إجراء العمليات عليها أم لا ، فإنه يحدث فرقًا كبيرًا في أداء العرض. إذا كانت الجداول والأعمدة ذات الصلة مفهرسة بالفعل الوصول إلى طريقة العرض لا ينتهي في إعادة حساب الفهارس مرارا وتكرارا أولا . (في الجانب السلبي ، يتم ذلك عند معالجة البيانات في الجداول المصدر)

! فهرسة جميع الأعمدة المستخدمة في جمل JOINS و GROUP BY في بيان CREATE VIEW!

3
petermeissner

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

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

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

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

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

3
Nanne