Ahmed Aljaberi
Ahmed Aljaberi

@ahmed_aljabri

11 تغريدة 79 قراءة Feb 21, 2020
بما اني ذكرت قواعد البيانات و بمناسبة وصول هذا الكتاب الجميل (لم اقرأه بعد ) فهذه بعض المباديء او التقنيات العامة في التعامل مع قواعد البيانات و كيفية تسريعها من جانب المبرمج , الDBA له طرق أخرى لن اذكرها هنا.
(سلسلة )
-لما تكتب جملة SQL فأي حقل تستخدمه في الWhere ضروري يكون له Index ايضاً الحقول في Order by او Group by حط لها Index. ترتيب الحقول في جزء الWhere لا يهم. فقاعدة البيانات تهتم بذلك. و لاتنسى ان تقوم بالRebuilding لها كل فترة.
-افهم الفرق بين الClustered و الNon-Clustered Index. الClustered Index على اساسه يترتب كيف بياناتك تتخزن فعلياً مرتبة حسب الحقل, كل Row جديد بيكون في اخر القائمة عند الInsert .
-الClustered اسرع في عملية Select و الNon-Clustered اسرع في Insert و Update. الأفضل يكون الClustered Index على حقل متسلسل مثل رقم فاتورة او تاريخ ووقت حسب الأهمية لديك.
-الClustered Index اسرع من الNon-Clustered في القراءة لكنك تستطيع فقط إنشاء واحد فقط لكل جدول .فحاول اختيار الIndex الصحيح بحيث يكون على اكثر حقل تستخدمه في جملة Where و لا تستخدمه مع حقول من نوع UNIQUEIDENTIFIER او الUUID.
-اي Index تضيفه فهو على حساب سرعة الInsert. اذا كان عندك بيانات كثيرة تريد عمل Insert لها فيمكنك الغاء الIndex و بعد الانتهاء اعد بنائها من جديد.
-لما تحتاج تعرف اذا هناك سجل موجود فاستخدم Exists بدل Count
-دائماً قلل عدد السجلات المطلوبة , اذا كانت قاعدة بياناتك تدعم LIMIT استخدمها.
-الStored Procedure مفيدة جداً عندما تستخدمها في جمل الاستعلام لأنها تحفظ طريقها , فقد يكون ندائها الأول بطيء لكن الثاني اسرع. استخدمها في الQuery فقط و لا تضع فيها أي Business Logic.
-اطلب الحقول التي تحتاجها فقط فلا تستخدم Select * From فحقل واحد قد يفرق معك في الوقت.
-لا تكن كريم , كُن بخيل دائماً في اظهار بياناتك , لا تظهر بيانات لا يحتاجها المستخدم على الأقل حالياً , دعه يضغط على "المزيد" او "التفاصيل" او لسحب بيانات الصفحة الثانية اذا كان لديك جدول.
-حاول تتجنب الFunctions مثل تحويل التواريخ او اخذ جزء من التاريخ , خذ التواريخ كاملة بكلمة between.
-ايضاً حاول انك ماتستخدم الForeign Key. ممكن كثير يعترضون , لكنها تؤثر جداً على الPerformance. خل العلاقات في جمل الSQL. ممكن تأخذ الموضوع من ناحية ان العلاقات هي نوع من الBusiness Logic و اللي المفروض الداتابيز مالها علاقه به.
في النهاية هناك كتب متخصصة في الDatabase Performance او الQuery Tuningو كل مافهمت الDatabase Internals كلما قلت الحاجة لقراءة مثل تلك الكتب لانك ستعرف بالتفصيل كيف ستتنفذ جملتك. ماذكرته بعض التقنيات اللي مسؤول عنها المبرمج لا الDBA. و للDBA تقنيات اخرى لرفع الPerformance.

جاري تحميل الاقتراحات...