تبلیغات :
آکوستیک ، فوم شانه تخم مرغی، صداگیر ماینر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 8 از 8

نام تاپيک: مشكل با ذخيره سازي فايل حجيم

  1. #1
    پروفشنال hoseinquest's Avatar
    تاريخ عضويت
    Dec 2004
    محل سكونت
    خودم ‌اينجا‌ قلبم ‌بين‌الحرمين
    پست ها
    793

    پيش فرض مشكل با ذخيره سازي فايل حجيم

    سلام
    من با استفاده از LInq به sql ميخوام يك فايل رو تو يك فيلد varbinary(max) ذخيره كنم . ضمنا Filestream هم فعال هست . منتها با فايلهاي حجيم مثل 400 و 500 مگ مشكل ذخيره سازي دارم . كد هم به شكل زير است :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    هنگاني كه كد اجرا ميشه خطاي :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    نمايش داده مي‌شود

  2. #2
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    خوب مشخص و واضح است که مشکل ساز میشود.
    اصلاً برنامه نویس باید حد و مرزی معقول برای استفاده از RAM توسط برنامه اش تاین کند.
    راه منطقی آن است که با دستور INSERT اطلاعات را درج کنید ولی برای ذخیره دیتاهای بزرگ از UPDATE و به صورت بافری و داخل حلقه استفاده کنید. یعنی مثلاً هر بار 64K از فایلتان را بخوانید و به انتهای دیتهای قبلبی در دیتابیس اضافه کنید و این کار را در یک حلقه انجام دهید تا کل فایل تمام شود و به دیتابیس منتقل شود.
    (از دستور WRITE هم میتوانید در T-SQL استفاده کنید.)
    Last edited by _H2_; 09-09-2009 at 21:05.

  3. #3
    پروفشنال hoseinquest's Avatar
    تاريخ عضويت
    Dec 2004
    محل سكونت
    خودم ‌اينجا‌ قلبم ‌بين‌الحرمين
    پست ها
    793

    پيش فرض

    سلام
    خيلي ممنونم از جوابتون دوست عزيز
    لطف كنيد كمي بيشتر در رابطه با استفاده ازروش بالا در قالب linq به من توضيح بديد متشكر ميشم . خطاي گرفته شده در خط :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    نمايش داده ميشه .
    ضمنا يك سوال رم سيستم من 2گيگ هستش چرا نميتونه يك فايل 500 مگي رو پردازش كنه ؟
    خيلي ممنونم

  4. #4
    پروفشنال hoseinquest's Avatar
    تاريخ عضويت
    Dec 2004
    محل سكونت
    خودم ‌اينجا‌ قلبم ‌بين‌الحرمين
    پست ها
    793

    پيش فرض

    سلام
    خيلي ممنونم از جوابتون دوست عزيز
    لطف كنيد كمي بيشتر در رابطه با استفاده ازروش بالا در قالب linq به من توضيح بديد متشكر ميشم . خطاي گرفته شده در خط :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    نمايش داده ميشه .
    ضمنا يك سوال رم سيستم من 2گيگ هستش چرا نميتونه يك فايل 500 مگي رو پردازش كنه ؟
    خيلي ممنونم

  5. #5
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    چند حالت در تاخیر جوابهای تاپیک های من وجود دارد.
    1) جواب نیاز به کد و کاری دارد که وقت خالی اش ایجاد نشده.
    2) سوال آنقدر کلی است که جواب دادنش تقریباً غیر ممکن است و باز آدم می ماند چه بگوید!
    3) فراموشی!

    متاسفانه و با عرض شرمندگی تاپیک شما شامل بند آخر شد!

    طف كنيد كمي بيشتر در رابطه با استفاده ازروش بالا ...
    در ابزاری که مد نظر شما است را نمیدانم ولی اصولاً فرقی ندارد.
    روش کلی دستوری شبیه این است:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    یعنی فایل بزرگتان را به صورت Stream ای و تکه تکه بخوانید و در قطعه اول از دستور INSERT و برای اضافه کردن قطعات بعدی از سینتکسی مثل فوق استفاده کنید.

    رم سيستم من 2گيگ هستش چرا نميتونه يك فايل 500 مگي رو پردازش كنه
    1) رم شما مشترک است و برای مدیریت خود ویندوز و سایر سرویس ها و برنامه های موجود هم استفاده میشود و فضای آزاد خالی همیشه کمتر است.

    2) وقتی سیستم کار میکند و حافظه تخصیص میدهد و پس میگرد چه به خاطر سرویسهای داخلی و چه برنامه های مشخصی که اجرا میکنید ...
    حافظه شما فرگمنت میشود، یعنی راستای بلوک حافظه شما دندانه دندانه خالی و پر خواهد شد و مثلاً شاید بتوانید 2 تکه مجزای 400 مگی پیدا کنید و 800 مگ حافظه خالی داشته باشید ولی نتوانید یک تکه 500 مگی پیدا کنید !

    2) اگر شما شرکتی با 2 میلیارد سرمایه داشته باشید و فوراً یک کارمند دون پایه زود از راه برسد و بخواهید 500 میلیون را برای پروژه ای مجهول بگیرید، شما میدهد یا نه؟
    مدیر حافظه ویندوز برای مدیریت درخواست های اتی و نیز امنیت و مقاومت در برابر برنامه های مخرب رایانه ای هر درخواستی را بر آورده نخواهد کرد و عدد درخواستی شما باید معقول و منطقی باشد.

    موفق باشید.

  6. این کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده است


  7. #6
    پروفشنال hoseinquest's Avatar
    تاريخ عضويت
    Dec 2004
    محل سكونت
    خودم ‌اينجا‌ قلبم ‌بين‌الحرمين
    پست ها
    793

    پيش فرض

    سلام
    ممنونم از جوابتون در عين فراموشي
    با توضيحات قبلي شما من رفتم سراغ اجراي طرح شما در خود محيط برنامه و اين كاررا يعني قسمت قسمت گرفتن اطلاعات را با استفاده از sql انجام ندادم و سعي كردم ابتدا 10 مگ را يگيرم و سپس 10مك 10مك به آن اضافه كنم كه LINQ به من اجازه نميداد . حالا بايد برم فردا محل كار تستش كنم ببيتم روش شما جواب ميده يا نه كه مطمئنا اگر جواب نده من خوب عمل نكردم و دوباره مزاحم شما ميشوم .
    ياعلي

  8. #7
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    ابتدا 10 مگ را يگيرم و سپس 10مك 10مك
    باز هم به نظر من بافرهایتان بزرگ است.
    من بودم بسته به شرایط و حجم و تعداد فایل و مشخصات فنی حداقلی رایانه ای که باید بتواند برنامه را اجرا کند و تراکم شبکه و...

    برای بافر موقت هر تکه عدد 64KB یا 512KB و حداکثر 1MB را انتخواب میکردم.
    (حتی اگر برنامه وبی و asp.net بود که احتمال دارد هزاران کاربر آنلاین داشته شاید بسته ها را کوچک تر هم میکردم !)

    موفق باشید.

  9. این کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده است


  10. #8
    پروفشنال hoseinquest's Avatar
    تاريخ عضويت
    Dec 2004
    محل سكونت
    خودم ‌اينجا‌ قلبم ‌بين‌الحرمين
    پست ها
    793

    پيش فرض

    هرچه بسته ها كوچكتر باشند يعني تعداد تراكنش ها بيشتر ميشود . براي همين يك فايل (كه من شايد در روزها 100 نوع از اين فايلها داشته باشم) بايد حداقل 500 تراكنش انجام بشه . يعني اكثر ترافيك شبكه من فقط ميره واسه ذخيره سازي فايلم .

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •