1. اختيار SqlDataRead وDataset مزايا Sqldataread: قراءة البيانات سريعة جدًا. إذا كانت البيانات التي تم إرجاعها لا تتطلب الكثير من المعالجة، فمن المستحسن استخدام SqlDataReader، الذي يكون أداؤه أفضل بكثير من مجموعة البيانات. العيوب: لا يمكن إغلاق الاتصال بقاعدة البيانات حتى تتم قراءة البيانات
(يقرأ SqlDataReader البيانات في اتجاه للأمام السريع. توفر فئة SqlDataReader طريقة لقراءة دفق البيانات لإعادة التوجيه فقط الذي تم استرداده من قاعدة بيانات SQL Server. ويستخدم SQL Server يقرأ تنسيق نقل بيانات الشبكة الأصلية البيانات مباشرة من اتصال قاعدة البيانات. ويجب إغلاق DataReader بشكل صريح في الوقت المناسب لتحرير اتصال البيانات في الوقت المناسب.)
تقرأ مجموعة البيانات البيانات وتخزنها مؤقتًا في الذاكرة. العيوب: استخدام عالي للذاكرة. إذا كنت بحاجة إلى إجراء الكثير من المعالجة على البيانات التي تم إرجاعها، فمن الأفضل استخدام Dataset لتقليل عمليات الاتصال بقاعدة البيانات. المزايا: ما عليك سوى الاتصال مرة واحدة لإغلاق الاتصال بقاعدة البيانات
. بشكل عام، إذا كنت تريد قراءة كمية كبيرة من البيانات ولا تقوم بالكثير من المعالجة على البيانات التي تم إرجاعها، فاستخدم SqlDataReader لكمية كبيرة معالجة البيانات التي تم إرجاعها، فمن الأفضل استخدام مجموعة البيانات. يعتمد اختيار SqlDataReader وDataset على تحقيق وظائف البرنامج.
2. لا يحتاج ExecuteNonQuery وExecuteScalar
إلى إرجاع مجموعة النتائج عند تحديث البيانات. يوصى باستخدام ExecuteNonQuery. نظرًا لعدم إرجاع أي مجموعة نتائج، يمكن حذف نقل بيانات الشبكة. يقوم ببساطة بإرجاع عدد الصفوف المتأثرة. إذا كنت تحتاج فقط إلى تحديث البيانات، يكون عبء أداء ExecuteNonQuery صغيرًا نسبيًا.
يقوم ExecuteScalar بإرجاع العمود الأول فقط من الصف الأول في مجموعة النتائج. استخدم الأسلوب ExecuteScalar لاسترداد قيمة واحدة (مثل رقم المعرف) من قاعدة البيانات. تتطلب هذه العملية تعليمات برمجية أقل من استخدام أسلوب ExecuteReader لتنفيذ العمليات المطلوبة لإنشاء قيمة واحدة على البيانات التي تم إرجاعها.
* فقط قم بتحديث البيانات باستخدام ExecuteNonQuery. يستخدم الاستعلام عن قيمة واحدة خيار ربط بيانات ExecuteScalar
3. ربط البيانات
طريقة الربط العامة DataBinder <%# DataBinder.Eval(Container.DataItem, "field name") %> استخدم DataBinder.eval الربط لا يهتم بمصدر البيانات (Dataread أو dataset). لا داعي للقلق بشأن نوع البيانات. سوف يقوم eval بتحويل كائن البيانات هذا إلى سلسلة. تم إنجاز الكثير من العمل على الارتباط الأساسي باستخدام إمكانات الانعكاس. لمجرد أنه مناسب للاستخدام، فإنه يؤثر على أداء البيانات. دعونا نلقي نظرة على <%# DataBinder.Eval(Container.DataItem, "field name") %>. عندما يكون DataItem مرتبطًا بمجموعة بيانات، فهو في الواقع DataRowView (إذا كان مرتبطًا بقارئ بيانات (dataread)، فهو IdataRecord.) لذلك، فإن تحويله مباشرة إلى DataRowView سيحسن الأداء بشكل كبير.
<%# ctype(Container.DataItem,DataRowView).Row("اسم الحقل") %>
* يوصى باستخدام <%# ctype(Container.DataItem,DataRowView).Row("اسم الحقل") %> للبيانات ملزمة. عندما تكون كمية البيانات كبيرة، يمكن زيادة السرعة مئات المرات. انتبه إلى جانبين عند استخدامه: 1. تحتاج إلى إضافة <%@ Import namespace="System.Data"%> إلى الصفحة 2. انتبه إلى حالة اسم الحقل (انتبه بشكل خاص). إذا كان غير متوافق مع الاستعلام، ففي بعض الحالات سيكون أبطأ من <%# DataBinder.Eval(Container.DataItem, "field name") %>. إذا كنت ترغب في تحسين السرعة بشكل أكبر، فيمكنك استخدام الأسلوب <%# ctype(Container.DataItem,DataRowView).Row(0) %>. ومع ذلك، فإن سهولة القراءة ليست عالية.
ما ورد أعلاه هو طريقة الكتابة لـ vb.net. في c#: <@% ((DataRowView)Container.DataItem)["field name"] %>
أبسط طريقة لعرض حالة كل عملية تنفيذ على الصفحة: يمكنك عرض التفاصيل إذا كانت سمة التتبع للصفحة هي حقيقي.
1. استخدام الإجراءات المخزنة:
1. الأداء: توفر الإجراءات المخزنة العديد من الميزات المتقدمة التي لا توجد في لغة SQL القياسية. تساعد قدرته على تمرير المعلمات وتنفيذ التعبيرات المنطقية مصممي التطبيقات على التعامل مع المهام المعقدة. بالإضافة إلى ذلك، يتم تخزين الإجراء المخزن على الخادم المحلي، مما يقلل من عرض النطاق الترددي لنقل الشبكة ووقت التنفيذ المطلوب لتنفيذ الإجراء. (قام الإجراء المخزن بترجمة بيان SQL مسبقًا، لذا فإن سرعة تنفيذه أسرع بكثير من تنفيذ بيان SQL في البرنامج)
2. هيكل البرنامج: من منظور قابلية تطوير البرنامج، سيؤثر استخدام الإجراءات المخزنة على التعديلات المستقبلية للبرنامج للراحة. على سبيل المثال، إذا تغيرت بنية قاعدة البيانات، فأنت بحاجة فقط إلى تعديل بنية التخزين المقابلة وجزء الاتصال من البرنامج. هذا الجزء لا يقع ضمن نطاق هذه المقالة وينتمي إلى تصميم هيكل البرنامج. لذلك لن أتوسع فيه هنا.
3. أمان البرنامج: يمكن تجنب هجمات حقن SQL باستخدام الإجراءات المخزنة.
2. تحسين عبارات الاستعلام (لـ SQL Server2000)
يكتب العديد من الأشخاص عبارات SQL لهذا الغرض فقط، دون النظر إلى كفاءة تنفيذ عبارات SQL. هنا أقدم فقط طريقة لتحسين ترتيب الجداول (ستتم مناقشة تحسين عبارات SQL ومبادئها في ملاحظات دراسة SQL Server2000 الخاصة بي.)
للحصول على كفاءة تنفيذ عبارات SQL، يمكنك استخدام محلل الاستعلام الخاص بـ SQL Server2000 للقيام بذلك. عرض عملية تنفيذ البيانات.
تحسين ترتيب الجدول: في ظل الظروف العادية، سيقوم sqlserver تلقائيًا بتحسين اتصالات الجدول. على سبيل المثال: حدد name,no من A join B على A. id=B.id join C على C.id=A.id حيث name='wang'على الرغم من أن
الجدول A مدرج أولاً في From، ثم B، وأخيرًا انها ج. لكن قد يستخدم خادم SQL جدول C أولاً. مبدأ الاختيار الخاص به هو قصر الاستعلام على صف واحد أو بضعة صفوف، بحيث يمكن تقليل إجمالي كمية البيانات التي يتم البحث عنها في الجداول الأخرى. في معظم الحالات، سيقوم SQL Server بالاختيار الأمثل، ولكن إذا وجدت أن استعلام صلة معقد أبطأ من المتوقع، فيمكنك استخدام عبارة SET FORCEPLAN لإجبار SQL Server على استخدام الجداول بالترتيب الذي تظهر به. كما في المثال أعلاه، قم بإضافة: SET FORCEPLAN ON....... SET FORCEPLAN OFF سيتم تنفيذ ترتيب تنفيذ الجدول بالترتيب الذي كتبته. اعرض كفاءتي التنفيذ في محلل الاستعلام لاختيار الترتيب الذي يتم به ضم الجداول.
* استخدم SET FORCEPLAN لتحديد تسلسل اتصال الجدول
3. يركز تحسين الصفحة (.aspx)
بشكل أساسي على سمات الصفحة المتعددة
1. EnableViewState (حالة عرض الصفحة). اضبط على خطأ إذا لم تكن هناك متطلبات خاصة. باستخدام ViewState، يجب أولاً إجراء تسلسل لكل كائن في ViewState ثم إلغاء تسلسله عبر إعادة النشر، لذلك لا توجد تكلفة لاستخدام ViewState. استخدم أقل عدد ممكن من الكائنات، وإذا أمكن، قم بتقليل عدد الكائنات التي تضعها في ViewState. يمكن تعطيل حالة العرض بشكل أساسي في المواقف التالية:
(1) التحكم في الصفحة (ascx.)
(2) لا يتم إرجاع الصفحة إلى نفسها.
(3) لا يلزم معالجة الأحداث لعناصر التحكم.
(4) لا يحتوي عنصر التحكم على قيم خصائص ديناميكية أو مرتبطة بالبيانات (أو تتم معالجته في التعليمات البرمجية لكل حزمة بريدية)
قم بتعطيل ViewState لصفحة واحدة أو لكل صفحة، كما يلي: صفحة واحدة: <%@ Page EnableViewState=" False" %> كل صفحة: في web.config <Pages EnableViewState="false" /> يمكن لـ EnableSessionState الاحتفاظ بالقيمة الافتراضية (لن تشغل الموارد إلا إذا كانت الصفحة تستخدم حالة الجلسة). EnableViewStateMac إذا لم تكن هناك متطلبات أمان خاصة، فاحتفظ بالقيمة الافتراضية.
2. نموذج تخطيط الصفحة. يوصى باستخدام Flowlayout (تتم إضافة العناصر بدون سمات تحديد الموضع المطلقة). ستنتج Gridlayout (سمات تحديد الموضع المطلق) تعليمات برمجية أكثر من Flowlayout بسبب استخدام تحديد الموضع المطلق، وبشكل أساسي معلومات تحديد الموضع الخاصة بعنصر التحكم.
3. عند إطلاق المشروع، تذكر تحرير حالة التصحيح الخاصة بالصفحة.
4. تحسين لغة HTML. اقتراحي هو أن تكون بارعًا في لغة Html/JavaScript وأن تستخدم عددًا أقل من التعليمات البرمجية التي يتم إنشاؤها تلقائيًا بواسطة vs.net2003، وسيقوم تلقائيًا بإنشاء بعض أكواد html غير المفيدة.
5. يمكن أن يؤدي ضبط التنقل الذكي على "صحيح" إلى تحسين أداء المستخدم بشكل كبير. تمكين هذه الخاصية له تأثير ضئيل على العميل والخادم، حيث يمكنه تحديث الأجزاء التي تحتاج إلى التحديث بذكاء.
4. اختيار عناصر التحكم:
اختيار عناصر تحكم Html وعناصر تحكم الخادم. إن الراحة والإدراك الوظيفي الذي توفره عناصر تحكم الخادم لا مثيل لهما من خلال عناصر تحكم HTML. ولكن يتم الحصول عليها على حساب الموارد من جانب الخادم. اقتراحي الشخصي: إذا لم يتمكن عنصر تحكم html من تحقيق الوظائف التي يريد تحقيقها، ولا يمكن تحقيقها عند دمجها مع بعض لغات البرمجة النصية (مثل javascrpt/vbscript). عندها فقط سيتم تحديد عنصر تحكم الخادم. بعد تحديد عنصر التحكم في الخادم، حاول تحسين التحكم فيه، مثل إلغاء بعض حالات الصفحة وما إلى ذلك (راجع تحسين التحكم على وجه التحديد
: اشرح بشكل أساسي العديد من عناصر التحكم في البيانات الشائعة:
DataGrid: يأتي مع الأقوى
).عرض البيانات يحتوي عنصر التحكم على العديد من الوظائف العملية مثل تعديل البيانات وحذفها وإضافتها وترحيلها. إذا كنت بحاجة إلى عرض البيانات فقط، فحاول عدم اختيار DataGrid (فهي تقوم بتخزين جميع البيانات في حالة العرض). كما لا تستخدم وظيفة الترحيل المضمنة، على الرغم من أن Microsoft قامت بالكثير من العمل على الطبقة السفلية من الترحيل التلقائي إنه مناسب للاستخدام، والأداء ضخم.
DataList: يحتوي على وظائف أقل بكثير من DataGrid. لكنها أكثر قابلية للتخصيص. توفر لنا شاشة عرض البيانات الفريدة متعددة الأسطر الكثير من الراحة. يمكنه بشكل أساسي تنفيذ الوظائف التي يمكن لـ DataGrid تحقيقها. لذا ينصح باستخدامه.
المكرر: الأقل وظيفية، ولكنه قابل للتخصيص للغاية. يوصى باستخدامه إذا كنت بحاجة فقط إلى عرض البيانات. نظرًا لتقليل العديد من الوظائف، يكون استهلاك أداء الخادم في حده الأدنى. لذلك، إذا كنت تريد عرض البيانات، فأنا أختار بشكل أساسي Repeater، ثم
حاول DataList وأخيرًا DataGrid * اختيار عنصر تحكم html. يتم تنفيذ الوظائف التي يمكن تنفيذها على العميل على العميل (يتقن جافا سكريبت)، مما يقلل الضغط على الخادم. تسلسل اختيار التحكم في البيانات: Repeater، وDataList، وDataGrid
5. تحسين عناصر تحكم الخادم:
1.
حالة العرض لعنصر التحكم Viewstate هي في الأساس نفس حالة عرض الصفحة. يستخدم لحفظ بعض حالات التحكم. مبدأ المعالجة هو نفس معالجة حالة عرض الصفحة. إذا كنت مهتمًا، فيمكنك استخدام Datagrid لربط البيانات لاختبار كمية البيانات المحفوظة بواسطة حالة العرض، والبيانات التي تحفظها هي في الأساس نفس كمية البيانات المعروضة بواسطة Datagrid.
2.
القيمة الافتراضية لـ Ispostpack هي false، ويجب ضبطها على true عندما يلزم إنشاء حدث ما،
ويعتمد تحسين عنصر التحكم بشكل أساسي على معرفتك بعنصر التحكم هذا. كلما فهمت الأعمال الداخلية لعنصر التحكم بشكل أفضل، كلما تمكنت من تحسينه بشكل مناسب.
لا يمكن شرح تحسين الأداء في بضع جمل. ما كتبته هو مجرد غيض من فيض. يعتمد تحسين الأداء على تراكم الخبرة اليومية والفهم المستمر لمبادئ تشغيل البرنامج.
6. مشاكل الاستثناء
لا داعي لاستخدام الاستثناءات للمشاكل العامة، مثل مشاكل عدم وجود المستخدم في المنتدى، أو كلمة مرور المستخدم غير صحيحة، وما إلى ذلك، لأن إنشاء استثناء يتطلب الكثير من الموارد ويتطلب ملء البيانات معلومات الاستثناء (نوع الاستثناء، موقع الاستثناء حيث يتم طرح الاستثناء) وما إلى ذلك)، بالطبع ليس لتجنب استخدام الاستثناءات، ولكن للتعامل مع الاستثناءات الضرورية، مبدأ: لا تستخدمها إذا استطعت. ولا تقم بإنشاء الاستثناءات الخاصة بك إذا كان بإمكانك استخدام الاستثناءات الموجودة في النظام.