تحسين الاستعلام
يُعد تحسين الاستعلامات ميزةً في العديد من أنظمة إدارة قواعد البيانات العلائقية وقواعد البيانات الأخرى مثل قواعد بيانات NoSQL وقواعد بيانات الرسوم البيانية . يحاول مُحسِّن الاستعلامات تحديد الطريقة الأكثر كفاءة لتنفيذ استعلام مُحدد من خلال النظر في خطط الاستعلام المُحتملة . [ 1 ]
بشكل عام، لا يمكن للمستخدمين الوصول مباشرةً إلى مُحسِّن الاستعلامات: فبمجرد إرسال الاستعلامات إلى خادم قاعدة البيانات، وتحليلها بواسطة المُحلِّل، تُمرَّر إلى مُحسِّن الاستعلامات حيث تتم عملية التحسين. [ 2 ] [ 3 ] ومع ذلك، تسمح بعض محركات قواعد البيانات بتوجيه مُحسِّن الاستعلامات باستخدام تلميحات .
الاستعلام هو طلب معلومات من قاعدة بيانات. قد يكون بسيطًا مثل "ابحث عن عنوان شخص يحمل رقم الضمان الاجتماعي 123-45-6789"، أو أكثر تعقيدًا مثل "ابحث عن متوسط رواتب جميع الرجال المتزوجين العاملين في كاليفورنيا الذين تتراوح أعمارهم بين 30 و39 عامًا والذين يتقاضون رواتب أقل من زوجاتهم". تُنتج نتيجة الاستعلام من خلال معالجة صفوف قاعدة البيانات بطريقة تُوفر المعلومات المطلوبة. نظرًا لتعقيد هياكل قواعد البيانات، في معظم الحالات، وخاصةً للاستعلامات المعقدة، يمكن جمع البيانات اللازمة للاستعلام من قاعدة البيانات من خلال الوصول إليها بطرق مختلفة، عبر هياكل بيانات مختلفة، وبترتيبات مختلفة. [ 4 ] تتطلب كل طريقة مختلفة عادةً وقتًا مختلفًا للمعالجة. قد تتباين أوقات معالجة الاستعلام نفسه بشكل كبير، من جزء من الثانية إلى ساعات، اعتمادًا على الطريقة المختارة. يهدف تحسين الاستعلام، وهو عملية مؤتمتة، إلى إيجاد الطريقة الأمثل لمعالجة استعلام معين في أقل وقت ممكن. يُبرر التباين الكبير المحتمل في الوقت إجراء تحسين الاستعلام، على الرغم من أن إيجاد خطة الاستعلام المثلى تمامًا، من بين جميع الاحتمالات، عادةً ما يكون معقدًا للغاية، ويستغرق وقتًا طويلاً بحد ذاته، وقد يكون مكلفًا للغاية، وغالبًا ما يكون مستحيلاً عمليًا. لذلك، يحاول تحسين الاستعلام عادةً تقريب الحل الأمثل من خلال مقارنة عدة بدائل منطقية لتوفير خطة "جيدة بما يكفي" في وقت معقول، والتي لا تنحرف عادةً كثيرًا عن أفضل نتيجة ممكنة.
اعتبارات عامة
توجد مفاضلة بين الوقت المستغرق في تحديد أفضل خطة استعلام وجودة الاختيار؛ فقد لا يختار مُحسِّن الاستعلام الإجابة الأمثل تلقائيًا. وتختلف أنظمة إدارة قواعد البيانات في طرق تحقيق التوازن بين هذين العاملين. تُقيِّم مُحسِّنات الاستعلام القائمة على التكلفة حجم موارد خطط الاستعلام المختلفة، وتستخدم ذلك كأساس لاختيار الخطة. [ 5 ] [ 6 ] تُخصِّص هذه المُحسِّنات "تكلفة" تقديرية لكل خطة استعلام مُحتملة، وتختار الخطة الأقل تكلفة. تُستخدم التكاليف لتقدير تكلفة وقت تشغيل تقييم الاستعلام، من حيث عدد عمليات الإدخال/الإخراج المطلوبة، وطول مسار وحدة المعالجة المركزية ، ومساحة مخزن القرص المؤقت، ووقت خدمة تخزين القرص، واستخدام الربط البيني بين وحدات التوازي، وعوامل أخرى مُحدَّدة من قاموس البيانات . يتم تشكيل مجموعة خطط الاستعلام التي يتم فحصها من خلال دراسة مسارات الوصول المُمكنة (مثل الوصول إلى الفهرس الأساسي، والوصول إلى الفهرس الثانوي، ومسح الملف الكامل) وتقنيات ربط الجداول العلائقية المختلفة (مثل الربط بالدمج ، والربط التجزئي ، والربط بالضرب ). قد تتسع مساحة البحث بشكل كبير تبعًا لتعقيد استعلام SQL . يوجد نوعان من التحسين: التحسين المنطقي، الذي يُنشئ سلسلة من العمليات الجبرية العلائقية لحل الاستعلام، والتحسين الفيزيائي، الذي يُستخدم لتحديد كيفية تنفيذ كل عملية.
تطبيق
تمثل معظم مُحسِّنات الاستعلام خطط الاستعلام على شكل شجرة من "عُقد الخطة". تُغلف كل عقدة خطة عملية واحدة مطلوبة لتنفيذ الاستعلام. تُرتَّب العُقد على شكل شجرة، حيث تتدفق النتائج الوسيطة من أسفل الشجرة إلى أعلاها. لكل عقدة صفر أو أكثر من العُقد الفرعية - وهي العُقد التي تُغذَّى مُخرجاتها كمدخلات للعقدة الأصلية. على سبيل المثال، تحتوي عقدة الربط على عقدتين فرعيتين، تُمثلان مُعاملي الربط، بينما تحتوي عقدة الفرز على عقدة فرعية واحدة (المدخل المراد فرزه). أما أوراق الشجرة فهي العُقد التي تُنتج النتائج عن طريق مسح القرص، على سبيل المثال عن طريق إجراء مسح فهرس أو مسح تسلسلي.
انضم إلى عملية الطلب
يتحدد أداء خطة الاستعلام بشكل كبير بترتيب ربط الجداول. على سبيل المثال، عند ربط ثلاثة جداول A وB وC، بأحجام 10 صفوف و10000 صف ومليون صف على التوالي، قد تستغرق خطة الاستعلام التي تربط الجدولين B وC أولاً وقتاً أطول بكثير للتنفيذ من تلك التي تربط الجدولين A وC أولاً. تحدد معظم مُحسِّنات الاستعلام ترتيب الربط باستخدام خوارزمية البرمجة الديناميكية التي طوّرها مشروع قاعدة بيانات System R من IBM . تعمل هذه الخوارزمية على مرحلتين:
- أولًا، تُحسب جميع طرق الوصول إلى كل علاقة في الاستعلام. يمكن الوصول إلى كل علاقة في الاستعلام عبر مسح تسلسلي. إذا كان هناك فهرس على علاقة يمكن استخدامه للإجابة على شرط في الاستعلام، فيمكن أيضًا استخدام مسح الفهرس. لكل علاقة، يسجل مُحسِّن الاستعلام أرخص طريقة لمسح العلاقة، بالإضافة إلى أرخص طريقة لمسح العلاقة التي تُنتج سجلات بترتيب فرز مُحدد.
- ثم يقوم المُحسِّن بدراسة دمج كل زوج من العلاقات التي يوجد لها شرط ربط. ولكل زوج، ينظر المُحسِّن في خوارزميات الربط المتاحة التي يُنفذها نظام إدارة قواعد البيانات . ويحتفظ بأقل تكلفة لربط كل زوج من العلاقات، بالإضافة إلى أقل تكلفة لربط كل زوج من العلاقات التي تُنتج مخرجاتها وفقًا لترتيب فرز مُحدد.
- ثم يتم حساب جميع خطط الاستعلام ذات العلاقات الثلاث، عن طريق ضم كل خطة ذات علاقتين تم إنتاجها في المرحلة السابقة مع العلاقات المتبقية في الاستعلام.
يُمكن لترتيب الفرز تجنب عملية فرز زائدة لاحقة أثناء معالجة الاستعلام. ثانيًا، يُمكن لترتيب فرز مُحدد تسريع عملية الربط اللاحقة لأنه يُجمّع البيانات بطريقة مُعينة.
تخطيط الاستعلامات للاستعلامات المتداخلة في لغة SQL
لا يقتصر استعلام SQL في نظام إدارة قواعد البيانات العلائقية الحديث على عمليات الاختيار والربط فحسب، بل غالبًا ما يتضمن عدة طبقات من كتل SPJ (اختيار-إسقاط-ربط) باستخدام عوامل التشغيل GROUP BY و INSTS و NOT INSTS . في بعض الحالات، يمكن تبسيط استعلامات SQL المتداخلة إلى استعلام اختيار-إسقاط-ربط، ولكن ليس دائمًا. كما يمكن اختيار خطط الاستعلام للاستعلامات المتداخلة باستخدام خوارزمية البرمجة الديناميكية نفسها المستخدمة لترتيب الربط، إلا أن ذلك قد يؤدي إلى زيادة هائلة في وقت تحسين الاستعلام. لذا، تستخدم بعض أنظمة إدارة قواعد البيانات نهجًا بديلًا قائمًا على القواعد يعتمد على نموذج رسم بياني للاستعلام. [ 7 ]
تقدير التكاليف
تُعدّ تقدير تكاليف خطط الاستعلام البديلة بدقة من أصعب المشكلات في تحسين الاستعلامات. تستخدم مُحسِّنات الاستعلامات نموذجًا رياضيًا لتكاليف تنفيذ الاستعلامات، يعتمد بشكل كبير على تقديرات عدد الصفوف (أو عدد الصفوف) التي تمر عبر كل حافة في خطة الاستعلام. ويعتمد تقدير عدد الصفوف بدوره على تقديرات عامل اختيار المُسندات في الاستعلام. تقليديًا، تُقدِّر أنظمة قواعد البيانات الانتقائية من خلال إحصائيات مُفصَّلة نسبيًا حول توزيع القيم في كل عمود، مثل المدرجات التكرارية . تُجدي هذه التقنية نفعًا في تقدير انتقائية المُسندات الفردية. مع ذلك، تحتوي العديد من الاستعلامات على اقترانات من المُسندات، مثل . غالبًا ما تكون مُسندات الاستعلام مُرتبطة ارتباطًا وثيقًا (على سبيل المثال، يستلزم )، ومن الصعب جدًا تقدير انتقائية الاقتران بشكل عام. يُعدّ ضعف تقديرات عدد الصفوف وعدم اكتشاف الارتباط أحد الأسباب الرئيسية التي تدفع مُحسِّنات الاستعلامات إلى اختيار خطط استعلام غير مُناسبة. لهذا السبب، ينبغي على مسؤول قاعدة البيانات تحديث إحصائيات قاعدة البيانات بانتظام، خاصةً بعد عمليات تحميل/تفريغ البيانات الكبيرة.selectcount(*)fromRwhereR.make='Honda'andR.model='Accord'model='Accord'make='Honda'
الإضافات
يفترض تحسين الاستعلامات التقليدي مقارنة خطط الاستعلامات وفقًا لمقياس تكلفة واحد، عادةً ما يكون وقت التنفيذ، وإمكانية حساب تكلفة كل خطة استعلام بدقة تامة. إلا أن هذين الافتراضين لا يتحققان دائمًا في التطبيقات العملية [ 8 ] ، ولذا دُرست في الأدبيات البحثية العديد من التوسعات لتحسين الاستعلامات التقليدي التي تتجاوز هذه القيود. وتختلف هذه التوسعات في كيفية نمذجة تكلفة خطط الاستعلامات الفردية، وفي هدف التحسين الذي تسعى إليه.
تحسين الاستعلام البارامتري
يربط تحسين الاستعلام التقليدي كل خطة استعلام بقيمة تكلفة عددية واحدة. أما تحسين الاستعلام البارامتري [ 9 ] فيفترض أن تكلفة خطة الاستعلام تعتمد على معلمات غير معروفة القيم وقت التحسين. يمكن لهذه المعلمات، على سبيل المثال، أن تمثل انتقائية مُسندات الاستعلام التي لم تُحدد بالكامل وقت التحسين، ولكن سيتم تحديدها وقت التنفيذ. لذلك، يربط تحسين الاستعلام البارامتري كل خطة استعلام بدالة تكلفة تُحوّل من فضاء معلمات متعدد الأبعاد إلى فضاء تكلفة أحادي البعد.
يهدف التحسين عادةً إلى توليد جميع خطط الاستعلام التي قد تكون مثالية لأي من تركيبات قيم المعلمات الممكنة. ينتج عن ذلك مجموعة من خطط الاستعلام ذات الصلة. أثناء التشغيل، يتم اختيار أفضل خطة من هذه المجموعة بمجرد معرفة القيم الحقيقية للمعلمات. وتكمن ميزة تحسين الاستعلامات البارامترية في تجنب عملية التحسين (التي تُعد عمومًا عملية مكلفة للغاية) أثناء التشغيل.
تحسين الاستعلام متعدد الأهداف
غالبًا ما توجد معايير تكلفة أخرى، بالإضافة إلى وقت التنفيذ، تُؤخذ في الاعتبار عند مقارنة خطط الاستعلام. ففي بيئة الحوسبة السحابية ، على سبيل المثال، ينبغي مقارنة خطط الاستعلام ليس فقط من حيث وقت التنفيذ، بل أيضًا من حيث تكلفة التنفيذ. أو في سياق تحسين الاستعلام التقريبي، يُمكن تنفيذ خطط الاستعلام على عينات مختارة عشوائيًا من بيانات الإدخال للحصول على نتائج تقريبية مع تقليل تكلفة التنفيذ. في مثل هذه الحالات، يجب مقارنة خطط الاستعلام البديلة من حيث وقت التنفيذ، وكذلك من حيث دقة البيانات التي تُنتجها أو موثوقيتها.
يُنمذج تحسين الاستعلام متعدد الأهداف [ 10 ] تكلفة خطة الاستعلام كمتجه تكلفة، حيث يُمثل كل عنصر من عناصر المتجه التكلفة وفقًا لمقياس تكلفة مختلف. ويمكن اعتبار تحسين الاستعلام التقليدي حالة خاصة من تحسين الاستعلام متعدد الأهداف، حيث يكون بُعد فضاء التكلفة (أي عدد عناصر متجه التكلفة) واحدًا.
قد تتعارض مقاييس التكلفة المختلفة فيما بينها (على سبيل المثال، قد توجد خطة ذات وقت تنفيذ قصير جدًا، وخطة أخرى ذات رسوم تنفيذ منخفضة جدًا في بيئة الحوسبة السحابية). لذا، لا يمكن أن يكون هدف التحسين هو إيجاد خطة استعلام تُقلل جميع مقاييس التكلفة، بل يجب أن يكون إيجاد خطة استعلام تُحقق أفضل توازن بين مختلف مقاييس التكلفة. ويعتمد هذا التوازن الأمثل على تفضيلات المستخدم (على سبيل المثال، قد يُفضل بعض المستخدمين خطة أرخص، بينما يُفضل آخرون خطة أسرع في بيئة الحوسبة السحابية). وبالتالي، فإن هدف التحسين هو إما إيجاد أفضل خطة استعلام بناءً على مواصفات تفضيلات المستخدم المُقدمة كمدخلات للمُحسِّن (على سبيل المثال، يُمكن للمستخدمين تحديد أوزان بين مقاييس التكلفة المختلفة للتعبير عن الأهمية النسبية، أو تحديد حدود تكلفة صارمة لمقاييس مُعينة)، أو إنشاء تقريب لمجموعة خطط الاستعلام المثلى وفقًا لمبدأ باريتو (أي الخطط التي لا توجد خطة أخرى بتكلفة أفضل وفقًا لجميع المقاييس)، بحيث يُمكن للمستخدم اختيار التوازن المُفضل للتكلفة من بين هذه المجموعة.
تحسين الاستعلام البارامتري متعدد الأهداف
يُعمم تحسين الاستعلامات البارامترية متعددة الأهداف [ 8 ] تحسين الاستعلامات البارامترية ومتعددة الأهداف. تُقارن الخطط وفقًا لمقاييس تكلفة متعددة، وقد تعتمد تكاليف الخطة على معلمات غير معروفة القيم وقت التحسين. لذا، تُنمذج تكلفة خطة الاستعلام كدالة من فضاء معلمات متعدد الأبعاد إلى فضاء تكلفة متعدد الأبعاد. يهدف التحسين إلى توليد مجموعة خطط الاستعلام الأمثل لكل توليفة ممكنة من قيم المعلمات وتفضيلات المستخدم.
تعرض العديد من الأدوات خطط تنفيذ الاستعلامات لتوضيح العمليات ذات التكلفة الأعلى للمعالجة. ومن الأمثلة على ذلك Microsoft SMS وApexSQLPlan وHana وTableau. يُمكن أن يُؤدي إصلاح هذه المشكلات الموجودة في هذه الخطط إلى تقليل وقت التنفيذ بنسبة عشرات بالمئة، وفي بعض الحالات يُمكن تحويل عمليات البحث ثنائية الأبعاد إلى عمليات بحث خطية.
من أهم وأبسط قوائم التحقق لتحسين الأداء استخدام العمليات التي صُممت معظم أنظمة إدارة قواعد البيانات العلائقية لتنفيذها بكفاءة. انظر Sargable .
انظر أيضاً
مراجع
- ↑ "مركز معارف IBM" . www.ibm.com .
- ↑ إيوانيديس، يانيس (مارس 1996). "تحسين الاستعلام" . مجلة ACM Computing Surveys . 28 (1): 121-123 . doi : 10.1145/234313.234367 . S2CID 47190708 .
- ↑ شودري، سوراجيت (1998). "نظرة عامة على تحسين الاستعلام في الأنظمة العلائقية" . وقائع ندوة ACM حول مبادئ أنظمة قواعد البيانات . ص 34-43 . doi : 10.1145/275487.275492 .
- ↑ سيلينجر، بي جي ؛ أستراهان، إم إم؛ تشامبرلين، دي دي ؛ لوري، آر إيه؛ برايس، تي جي (1979). "اختيار مسار الوصول في نظام إدارة قواعد البيانات العلائقية". وقائع مؤتمر ACM SIGMOD الدولي لإدارة البيانات لعام 1979. الصفحات 23-34 . doi : 10.1145/582095.582099 . ISBN 089791001X.
- ↑ " تحسين تكلفة استعلامات Oracle SQL" . www.dba-oracle.com
- ↑ "NoSQL Architect: Data modeling/query optimization for DynamoDB" . volisoft.org .
- ↑ "شرح خطة الاستعلام" . www.sqlite.org .
- 1 2 ترومر، إيمانويل؛ كوخ، كريستوف (2015). "تحسين الاستعلام البارامتري متعدد الأهداف" . سجل ACM SIGMOD . 45 : 221-232 . doi : 10.1145/2949741.2949748 .
- ↑ إيوانيديس، يانيس؛ نغ، ريموند ت.؛ شيم، كيوسوك؛ سيليس، تيموس ك. (1997). "تحسين الاستعلامات البارامترية". مجلة VLDB، المجلة الدولية لقواعد البيانات الضخمة جدًا . 6 (2): 132-151 . CiteSeerX 10.1.1.33.696 . doi : 10.1007/s007780050037 . S2CID 3060505 .
- ↑ ترومر، إيمانويل؛ كوخ، كريستوف (2014). مخططات التقريب لتحسين الاستعلام متعدد الأهداف . SIGMOD. ص 1299-1310 . arXiv : 1404.0046 .
- خوارزميات قواعد البيانات
- أنظمة إدارة قواعد البيانات
- SQL
