View Full Version : بهترین روشهای کار با داده از لحاظ اشغال حافظه فیزیکی و در عین حال سرعت در کار کردن با آنها
jerjis1912
چهارشنبه 17 مهر 1387, 17:42 عصر
سلام به همه
به این تاپیک همه دیتا کارای حرفه ای لطفا عنایت داشته باشن!
اولین سوال:
بهترین راه برای ذخیره دیتا واسه اینکه سرعت اجرای queri بالا باشه و حافظه فیزیکی کمتر اشغال بشه کدوم روشه (اگه فقط یه جدول داشته باشیم)؟
***ویرایش شده توسط مدیر***
__H2__
پنج شنبه 18 مهر 1387, 21:02 عصر
سلام
اگر منظورتان ذخیره سازی است که میتوانید به sqlserver اعتماد کنید!
ولی برای نمایش و استفاده هر چه بتوانید استفاده خود را از DataSet و DataTable کاهش دهید و از DataReader و Command استفاده کنید، معمولاً سرعت نهایی بیشتر و مصرف RAM به شدت کاهش می یابد.
البته بالاخره نگاه داشتن اطلاعات ضروری و به شدت مورد نیاز، در داخل RAM بهتر از لود هر باره آنها است.
شما باید به عنوان برنامه نویس و با توجهبه شرایط خاص پروژه تشخیص دهید چه چیزی در RAM کش شود و چه چیزی هرباره با DataReader خوانده شود.
salehbagheri
پنج شنبه 18 مهر 1387, 22:35 عصر
بهترين روشها از نظر من!
حتي الامكان از كدهاي Using و Try استفاده كنيد!
از StoredProcedure ها در عملياتهاي بانكي استفاده كنيد!
از كدها و كلاس هاي مشترك استفاده كنيد نه اينكه يك كد را براي هر صفحه مكرراً بنويسيد!
بازهم بگم؟؟!!!
jerjis1912
چهارشنبه 24 مهر 1387, 14:36 عصر
سلام
اگر منظورتان ذخیره سازی است که میتوانید به sqlserver اعتماد کنید!
ولی برای نمایش و استفاده هر چه بتوانید استفاده خود را از DataSet و DataTable کاهش دهید و از DataReader و Command استفاده کنید، معمولاً سرعت نهایی بیشتر و مصرف RAM به شدت کاهش می یابد.
البته بالاخره نگاه داشتن اطلاعات ضروری و به شدت مورد نیاز، در داخل RAM بهتر از لود هر باره آنها است.
شما باید به عنوان برنامه نویس و با توجهبه شرایط خاص پروژه تشخیص دهید چه چیزی در RAM کش شود و چه چیزی هرباره با DataReader خوانده شود.
سلام
از راهنمایی شما خیلی ممنونم.ولی راستش من راجع به sql و کلا منبع پیشرفته vb 2005 مشکل دارم.همه منابع تکراری و سطحی هستن. شما میتونید راهنماییم کنید؟
با تشکر
r0ot$harp
چهارشنبه 24 مهر 1387, 17:06 عصر
سلام
از راهنمایی شما خیلی ممنونم.ولی راستش من راجع به sql و کلا منبع پیشرفته vb 2005 مشکل دارم.همه منابع تکراری و سطحی هستن. شما میتونید راهنماییم کنید؟
با تشکر
دوست عزیز در مورد کدوم از بخش های .Net مشکل دارین . هزارتا بخش هست . اگر در مورد بانک ها مشکل داری که تو Google بزن Ado.Net برات چندین سایت میاره . در ضمن یه PDF هست که شب براتون می زارم .
باتشکر احسان
__H2__
چهارشنبه 24 مهر 1387, 23:00 عصر
سلام
سلام
از راهنمایی شما خیلی ممنونم.ولی راستش من راجع به sql و کلا منبع پیشرفته vb 2005 مشکل دارم.همه منابع تکراری و سطحی هستن. شما میتونید راهنماییم کنید؟
با تشکر
میبخشید ولی من هم مثل کاربر sanaz13x چندان مشکل شما را درک نکردم و نمیدانم در کدام بخش باید کمک کنم.
فقط میتونم توصیه های به جای کاربر salehbagheri را هم اضافه کنم و لیست کاملتر زیر را ارائه دهم:
در داخل دیتابیس موارد زیر میتواند کارآیی و سرعت sqlserver را افزایش دهد:
-بررسی دستورات sql مشابه که از راهای متفاوت به یک جواب مشترک میرسند و انتخاب بهترین دستور.
-استفاده از StoredProcedure
-انتخاب مناسب نوع فیلدها، استفاده بیتر از فیلدهای عددی و متنی ثابت و...
-index بندی درست و به جا
-در صورت نیاز استفاده از کاتالوگ و سرویس fulltextsearch (و سرویسهای دیگر sqlserver ...)
-shrink نکردن دیتابیس
-قرار دادن فایلهای دیتابیس در هارد های سریع و مخصوص استفاده انحصاری sqlserver
و...
در داخل کد و برنامه هم:
-استفاده بیشتر از DataReader و Command به جای DataSet و DataAdapter
-تولید دیرتر اشیا و بستن زودتر آنها (از جمله استفاده از using)
-کش دیتاهایی با حجم معقول و مورد استفاده زیاد و با تغییر کم
و...
jerjis1912
چهارشنبه 24 مهر 1387, 23:30 عصر
ye soale kolli:
aya badashtane 512 meg ram va ye cpu 2.4 va ye jadvale 4000000 recordi ke har record shamele 10 filde mishe bedune catch kardan tu ram queri hayi ba hadde aksar 3 shart ro ba pasokhe dasht? va behtarin ravesh baraye in kar kollan chiye? midunam payam zaife ama age rahnamayim konid menat gozashtid.ba tashakore faravan.
__H2__
جمعه 26 مهر 1387, 01:58 صبح
سلام
سیستم شما نسبتاً متوسط است ولی داشتن یک سیستم متوسط و حتی خوب دلیل و توجیحی برای حروم کردن منابع سیستم عامل و عدم دقت در کد نویسی با کارایی و سرعت بالا نیست.
مثلاً به تفاوت دو دستور زیر دقت کنید:
(چند وقت پیش برای دوست عزیزی در سایت دیگر سینتکسی شبیه زیر را عملاً تست کردم)
SELECT [id_pk], [strfield]
FROM
(
SELECT
.....
FROM [tn]
) DT
WHERE (.....);
--<EOC: 0.005467=25%>
----------------------------------------------------------------------
SELECT [id_pk], [strfield]
FROM
(
SELECT
.....
FROM [tn]
) DT
WHERE (.....)
ORDER BY [id_pk];
--<EOC: 0.016773=75%>
به علت آنکه id_pk فیلد primarykey جدول بود، خروجی هر دو دستور دقیقاً یکی بود ولی در یک اجرا دستور اول 25 درصد کل پردازش را به خود اختصاص داده بود و دستور دوم 75 درصد! یعنی فقط یک OrderBy که نیازی هم به وجودش نبوده پردازش را سه برابر سنگین تر کرده بود.
میخواهم بگویم به خاطر بهره مند بودن از یک سخت افزار خوب نمیتوان بار را از دوش خودمان برداریم و هر جور که راحت هستیم و هر کدی که در اولین قدم به ذهنمان میرسد را کدنویسی کنیم.
اگر مشکل شما فقط با کش است میتوانید انجامش ندهید مخصوصاً که شرایط خاصی دارد و استفاده اشتباه و در جای نامناسب میتواند نتیجه کاملاً عکس داشته باشد و موجب کاهش بازدهی برنامه شود.
ولی اصول بعدی که در پست قبلیم گفتم معمولاً مکان پیاده سازی شان و مرز انجام دادن و ندادنشان مشخص تر است و بهتر است تا جایی که برایتان مقدور است و میتوانید رعایتشان کنید.
jerjis1912
شنبه 27 مهر 1387, 17:17 عصر
سلام
سیستم شما نسبتاً متوسط است ولی داشتن یک سیستم متوسط و حتی خوب دلیل و توجیحی برای حروم کردن منابع سیستم عامل و عدم دقت در کد نویسی با کارایی و سرعت بالا نیست.
مثلاً به تفاوت دو دستور زیر دقت کنید:
(چند وقت پیش برای دوست عزیزی در سایت دیگر سینتکسی شبیه زیر را عملاً تست کردم)
SELECT [id_pk], [strfield]
FROM
(
SELECT
.....
FROM [tn]
) DT
WHERE (.....);
--<EOC: 0.005467=25%>
----------------------------------------------------------------------
SELECT [id_pk], [strfield]
FROM
(
SELECT
.....
FROM [tn]
) DT
WHERE (.....)
ORDER BY [id_pk];
--<EOC: 0.016773=75%>
به علت آنکه id_pk فیلد primarykey جدول بود، خروجی هر دو دستور دقیقاً یکی بود ولی در یک اجرا دستور اول 25 درصد کل پردازش را به خود اختصاص داده بود و دستور دوم 75 درصد! یعنی فقط یک OrderBy که نیازی هم به وجودش نبوده پردازش را سه برابر سنگین تر کرده بود.
میخواهم بگویم به خاطر بهره مند بودن از یک سخت افزار خوب نمیتوان بار را از دوش خودمان برداریم و هر جور که راحت هستیم و هر کدی که در اولین قدم به ذهنمان میرسد را کدنویسی کنیم.
اگر مشکل شما فقط با کش است میتوانید انجامش ندهید مخصوصاً که شرایط خاصی دارد و استفاده اشتباه و در جای نامناسب میتواند نتیجه کاملاً عکس داشته باشد و موجب کاهش بازدهی برنامه شود.
ولی اصول بعدی که در پست قبلیم گفتم معمولاً مکان پیاده سازی شان و مرز انجام دادن و ندادنشان مشخص تر است و بهتر است تا جایی که برایتان مقدور است و میتوانید رعایتشان کنید.
از توجه و عنایت شما دوست عزیز و بزرگ منش کمال سپاسگذاری رو دارم...
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.