0 امتیاز

من حجم زیادی اطلاعات در دیتابیس sql دارم و می خوام در سی شارپ این اطلاعات زیاد را در کم ترین زمان ممکن خوانده و وارده گرید بکنم.ولی متاسفانه با دستوری
 

            var Query = Db.Database.SqlQuery<Vw_InfoBas>("select * from Vw_InfoBas " ).ToList();

 

if (Query.Count != 0)
            {
                GrdnNabBas.RowCount = Query.Count;

                for (int i = 0; i <= Query.Count - 1; i++)
                {
                    GrdnNabBas.Rows[i].Cells[1].Value = Query[i].Bas_ID;
                    GrdnNabBas.Rows[i].Cells[2].Value = Query[i].CodeBas;
                    GrdnNabBas.Rows[i].Cells[3].Value = Query[i].FirstNameBas;
                    GrdnNabBas.Rows[i].Cells[4].Value = Query[i].FamilyBas;
                    GrdnNabBas.Rows[i].Cells[5].Value = Query[i].FullName;
                    GrdnNabBas.Rows[i].Cells[6].Value = Query[i].NamePedar;
                    GrdnNabBas.Rows[i].Cells[7].Value = Query[i].CodeMelli;
                    GrdnNabBas.Rows[i].Cells[8].Value = Query[i].ShomareShenasnameh;
                    GrdnNabBas.Rows[i].Cells[9].Value = Query[i].DateTavalod;
                    GrdnNabBas.Rows[i].Cells[10].Value = Query[i].Tahsilat;
                    GrdnNabBas.Rows[i].Cells[11].Value = Query[i].Shoghel;
                    GrdnNabBas.Rows[i].Cells[12].Value = Query[i].Mobile;
                    GrdnNabBas.Rows[i].Cells[13].Value = Query[i].Adress;
                    GrdnNabBas.Rows[i].Cells[14].Value = Query[i].DateInsert;
                    GrdnNabBas.Rows[i].Cells[15].Value = Query[i].CheckPrint;
                    GrdnNabBas.Rows[i].Cells[16].Value = Query[i].Gender;


                }


حدود 100000 رکورد با کندی نمایش داده میشوند.سریع ترین دستور کدومه؟

1 پاسخ

0 امتیاز
سلام دوست عزیز

مسائل بسیاری در افزایش سرعت خواندن رکورد از دیتابیس های حجیم تاثیر گذار هستن

من نمیخام زیاد تخصصی شرح بدم اما لازمه این موارد رو بدونید

هر نوع کامپیوتری برای کارهایی غیر از بازیها و نرم افزارهای با گرافیک بالا مانند 3دی مکس یعنی اون نرم افزارهایی که کار رندر رو انجام میدن اونم چند مورد استثنا هستن مابقی برای انجام کارها تا 8 گیگ رم کارایی لازم رو دارن مثلا همین لپ تاپ های گرانقیمت حداکثر رمشون 8 هست یعنی نرم افزار هرچقدر در حال تولید داده و محسابه باشه داده های موقت اون بیشتر از8 گیگ نمیشه

خب این مورد اول یعنی برای خواندن دیتابیس حداقل رم 8 رو باید داشته باشید

اما فاکتور اصلیCPU

اون سیستمی که داری روش از نرم افزار تست میگیری یا برنامه رو دیباگ میکنی

اولا بررسی کنید ببینید کش سی پی یو چقدره

ویژوال استودیو 2017 با 34 گیگ ظیفیت نصب یعنی همه زیر مجموعه های دات نت و زامارین در سیستم لپ تاپ x با کش 6مگ و هارد ssd در عرض 15 الی 20 قیقه نصب میشه اما همین نصب در لپ تاپ Y  با هارد معمولی 1 ساعت و بیشتر طول میکشه یعنی کش سی پی یو و حجم بافر و سرعت دور هد هارد در اینجا مهمترین تاثیر رو داره در ssd که بافر نیست اما باید سرعت read -write رو در نظر بگیری بعضی هارهای ssd وضعیتشون از ارهای معمولی بدتره

 و در اخر رم --تاثیر نه به اندازه اینا اما باید اونم در نظر داشته باشی

شما هر نوع کدی بخوای بنویسی اگر قراره روی یه سیستم نصب بشه میتونی زمان اجرا و خواندن دیتابیس رو تخمین بزنی اما روی سیستم های قدیمی حتی ddr3 نباید انتظار زادی داشته باشی

فکتور بعدی

اگه شما از دیتابیس با حجم میلیونی استفاده میکنید اوراکل گزینه بسیار خوبی هستمن چند تا شرکت رو میشناسم که برای چنین کارهایی از اوراکل استفاده میکنن سی شارپ هم پشتیبانی میکنه

و نکته مهم اینکه در نسخه اخیر اوراکل هوشمندانه طراحی شده بشکلی که دیتابیس بطور خودکار و دوره ای باگ ها رو اسکن و فیکس میکنه و در صورت وجود هک یا تلاش شخصی برای نفوذ بطور اتومات ای پی و مک سیستم شخص رو ذخیره و بن میکنه یعنی شخص نمیتونه با ای پی دیگه ای دوباره تست کنه ولی sql رو دست کم نگیریم اونم سرویس عالی هست

بعدی

برای چنین کارهایی شرکت ه متخصص دیتابیس استخدام میکنن قبلا عرض کردم با وجود اینکه برنامه نویس مسلط به دیتابیس هست و برنامه رو همین شخص یا تیمش طراحی کردن اما یه متخصص دیتابیس میاد و دیتابیس رو بهینه سازی میکنه یعنی خواسته های شما و قسمتی از کارهای که برای دیتابیس اوراکل گفتم  یعنی بهش میگن performance and tuning که در کدنویسی نمیشه این کارها رو برطرف کرد

مثلا SQL Server Service Broker احتمالا شما با این حج اطلاعات به این سرویس نیاز خواهید داشت توضیحش تو اینتر نت هست و سرویس های دیگه هم هست مبحث رو کمی باز کردم اما همینطور بنویسم باید ادامه بدم و نصفه نمیشه توضیح داد

سعی کنید از روش tableadapter استفاده نکنید

البته من خودم به این نتیجه رسیدم نظر اساتید دیگه رو هم اگه حضور دارن بخوایید این روش در دیتابیس های بزرگ کارایی لازم رو نداره

اما اگه مثلا متدی که بخوای برای خواندن اطلاعات از دیتابیس باشه باید بشکی باشه که استاندارباشه میتونم بگم روش ADO.Net

روش مناسب و خوبی هست

 

 اینجا میتونید در باره ado.net اطلاعات خوبی بگیری

https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/ado-net-code-examples
سوال جدید

2,337 سوال

2,871 پاسخ

3,725 دیدگاه

3,920 کاربر

دسته بندی ها

...