PDA

View Full Version : ارتباط VB و SQL Server



Elham_gh
پنج شنبه 13 بهمن 1384, 12:53 عصر
چند سال پیش که برنامه نویسی می کردم , یه مدت روی Performance برنامه ها کارکردم . امروز مطالبی رو که نوشته بودم پیدا کردم که دیدم ممکنه به درد مخاطبهای این قسمت بخوره.
این مطالب رو سعی می کنم در چندتاپیک ارائه کنم.منابع آن چندین کتاب و سایت است که در صورت نیاز آنها رو هم معرفی می کنم . امیدوارم بتونید استفاده کنید:


ارتباط VB و SQL Server :
1-دستورات DML مورد نیاز در برنامه خود را در Stored Procedure ها ، Capsulate کنید. این کار علاوه بر محاسن Capsulation ،ترافیک شبکه را کاهش میدهدو باعث افزایش سرعت اجرای Query می شوند.

2-وقتی ازAdo Recordset برای گرفتن اطلاعات از SQL Server استفاده می کنید ، بالاترین کارایی زمانی است که از Firehouse Cursor استفاده می کنید.

3-تعداد گردشهای بین برنامه و SQL Server را به حداقل برسانید.یکی از راههایی که به کم کردن این گردشها کمک می کند ، این است که برای انتقال اطلاعات از Client به SQL Server بجای چند Query, از یک Query استفاده کنید.

4-استفاده از Stored Procedure ها به مراتب کارایی شان از Viewها بیشتر است.

5-اگر به هر دلیلی نمی خواهید از Stored Procedure ها استفاده کنید از متد GetRow مربوط به RecordSet استفاده کنید.استفاده از این روش نیز به مراتب سریعتر از استفاده کردن از Embedded T-SQL است.

6-اگر در برنامه تان حلقه ای دارید که یک Stored Procedure را اجرا می کند ، تا جای ممکن سعی کنید حلقه را به Stored Procedure منتقل کنید.

Transaction -7 ها را با استفاده از متدهای ADO پیاده سازی نکنید ، در عوض آنها را در Stored Procedure ها Capsulate کنید.

8-تا حد امکان Business Logic را از سطح Application و Client دور کنید !! در طراحی 2 لایه آنها را در Stored Procedure ها روی Server قرار دهیدو در طراحی 3 لایه آنها را در Component ها روی MTS قرار دهید.

9-اگر می خواهید اطلاعاتتان را Filter یا Sort کنید ، این کار را به جای اینکه در Server انجام دهید به ADO واگذار کنید.

10-خصوصیت CachSize از ADO RecordSet تعیین می کند چند Row هر بار از Server-Side \Cursor ، Fetch شود.پیش فرض آن 1 است. و این باعث عدم کارایی می شود.باید این خصوصیت را در برنامه تان ست کنید.

11-وقتی برای فراخوانی Stored Procedure از شئی Command استفاده می کنید، از متد Refresh آن برای شناسایی پارامترهای Stored Procedure استفاده نکنید.

12-زمانی که Recorsetتان از نوع ForwardOnly است ، از متد MoveFirst استفاده نکنید.

13-سعی کنید از توانایی RecordSet Disconnected مربوط به ADO استفاده کنید ، چون در کم کردن Load در SQL Server کمک می کند.

14-اگر می دانید که خروجی یک Stored Procedure تنها یک ردیف است و تمام RecordSet نیست، یک RecordSet ADO باز نکنید. به جای آن از پارامترهای OutPut استفاده کنید.

15-اگر می خواهید که یک Data بزرگ Binary را در ستون Image ذخیره کنید ، اینکار را با Stored Procedure انجام دهید ، نه با استفاده از دستور INSERT به صورت Embedded .

16-از یک Connection Object هر بار که لازم دارید استفاده کنید.نه اینکه برای هر بار یک Connection Object جدید بسازید.

17-وقتی یک Command Object برای اجرا کردن یک Stored Procedure ایجاد می کنید ، هم می توانید از adCmdStoredProcedure استفاده کنید و هم از adCmdText . اما همیشه از adCmdStoredProcedure استفاده کنید که از RPC های بین Client و SQL Server استفاده می کند.استفاده از adCmdStoredProcedure کارایی را 20 تا 30 درصد بالا می برد.

18-اگر می خواهید یک Stored Procedure را از یک Command Object اجرا کنید و می دانید که Stored Procedure رکوردی را بر نمی گرداند از انتخاب adExecuteNoRecords استفاده کنید.

19-هیچگاه Object ی را داخل حلقه ، معرفی ، مقداردهی اولیه ، استفاده و تخریب نکنید.

meh_secure
پنج شنبه 13 بهمن 1384, 22:11 عصر
ممنون. بهتره یه کپی از این تاپیک هم تو بخش مقالات اضافه کنید.

Milad Mohseny
جمعه 14 بهمن 1384, 01:30 صبح
با سلام خدمت Elham_gh
خیلی از راهنمایی های شما استفاده کردم ولی اگر میشود یک نمونه برنامه بگذارید که راهنمایی های بالا را در بر داشته باشد تا من بتونم کاملاً نوشته های بالا رو بفهمم .
مرسیییییییییییییییییییییی ییییییییییییییییییییییییی ییی

Elham_gh
جمعه 14 بهمن 1384, 12:13 عصر
Milad Mohseny:

اگر میشود یک نمونه برنامه بگذارید که راهنمایی های بالا را در بر داشته باشد تا من بتونم کاملاً نوشته های بالا رو بفهمم .

دوست عزیز , آوردن 2 یا 3 نمونه مثال که تمام موارد ذکر شده را پوشش بده بسیار سخته. شما هر موردی که مد نظرتون هست بفرمایید که مثال مرتبطشو بیارم.

موفق و موید باشد.

Milad Mohseny
شنبه 15 بهمن 1384, 01:11 صبح
شرمنده روم به دیوار گلاب به روتون بی ادبی میشه :خجالت:
ولی در همه قسمتها مثال میخواهم

Elham_gh
شنبه 15 بهمن 1384, 01:18 صبح
شرمنده !!!

Milad Mohseny
شنبه 15 بهمن 1384, 01:27 صبح
با این حال باز هم ممنون
ولی به اندازه یه پفک نمکی برای ما ارزش قایل نشدی .
باز هم ممنون .