نمایش نتایج 1 تا 28 از 28

نام تاپیک: خراب شدن دیتابیس بعد از هنگ کردن

  1. #1
    کاربر دائمی آواتار سعید صابری
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    برازجان
    پست
    1,431

    خراب شدن دیتابیس بعد از هنگ کردن

    با سلام خدمت دوستان

    من برای تست تعداد زیادی رکورد در جدول اینسرت کردم حدود 500000 رکورد بیش از 10 دقیقه طول کشید مجبور شدم managerببندم (IbEexpert,falamerobin) . وقتی خواستم دوباره به دیتابیس وصل بشم با کمال تعجب پیغام داد که قادر به باز کردن نیست. تنها manager که تونست حدود 300000 رکورد درج کنه EMS بود .
    در حالی که mysql حدود 3-5 ثانیه این کوئری را انجام داد.

    FB نسخه 2.5 x64
    نظر دوستان چیه؟

  2. #2
    کاربر دائمی آواتار khorsandreza
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    تبریز
    پست
    776

    نقل قول: خراب شدن دیتابیس بعد از هنگ کردن

    معمولا هروز اتفاق نمی افته که شما 1000000 رکورد را وارد کنید و ضمننا درج اطلاعات به شاخص گذاری هم بستگی دارد من در InterBase اطلاعاتی در حدود دوازده میلیون رکورد را دارم و هر ماه حدود 300الی 400 هزار رکورد اضافه میشه از لحاظ سرعت دسترسی مشکلی ندارم ولی حرف شما را نیز قبول دارم اگر بخواهم این مقدار اطلاعات مجددا در دیتابیس دیگری اضافه کنم زمان بیش از 6 ساعت را طلب خواهد کرد ولی مگر این کار را چند بار در سال انجام می دیم خوشبختانه سرعت بکاپ گیری و ریستور کردنش مطلوب است 10 الی 15 دقیقه است برای دیتابیسی که بیش از 6GB است خوبه ولی انصافا نسبت به نصب اسکیول سرور (جائی که کاربر ضعیف است) خیلی خوب است من ازش راضی هستم با بیش از 120 کاربر همزمان کار می کنند .

  3. #3
    کاربر دائمی آواتار سعید صابری
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    برازجان
    پست
    1,431

    نقل قول: خراب شدن دیتابیس بعد از هنگ کردن

    خوبه ولی انصافا نسبت به نصب اسکیول سرور (جائی که کاربر ضعیف است) خیلی خوب است من ازش راضی هستم
    من الان حدود 4 -5 سال است mysql کنم.FB یک سری چیزهایی داره که نظرم جلب کرده...
    من قصد مقایسه اون دارم با Mysql. و کلا بحث sql server جداست. الان هم در حال تست FB هستم دنبال این جواب هستم آیا واقعا سرعت FB همین اندازه است؟ یا کار من مشکل داره؟
    mysql تقریبا 4 ثانیه یک کوئری انجام میده ولی FB بالاتر از 33 ثانیه.

  4. #4
    کاربر دائمی آواتار khorsandreza
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    تبریز
    پست
    776

    نقل قول: خراب شدن دیتابیس بعد از هنگ کردن

    من یکی از دوستانم با فایربرد و لازاروس برای یکی اموسسات سیستم طراحی کرده که محاسبات دقیق مالی را انجام می ده منهای کوئرهائی تولید می کنه لازم داره همه اطلاعات را بلافاصله در یک جدول اضافه Insert کنه برای مقایسه ! بنا بگفته خودش 100 یا 120 هزار رکورد میشه در زمانی کمتر از 3 ثانیه اتفاق می افته من دقیقا پست شماره یک شما را بهش فرستادم گفت بعید میدونه این مقدار رکورد این زمان را ببره و حالا گفته تست میکنه میگه .
    من از سال 1381 با Interbase 5.5 کار را شروع کردم و چهار پنج نرم افزار با همین پایگاه داده انجام دادم (حالا با نسخه 7.1 کار می کنم) و همین حالا هم دارم دیتابیس که پست قبلی اشاره کردم با کمی تغییرات در حال انتقال به فایر برد هستم خوشحال می شم از تجربیات همدیگه استفاده بکنیم

  5. #5

    نقل قول: خراب شدن دیتابیس بعد از هنگ کردن

    سلام
    مسائل متعددی میتونه باعث بروز این مسئله میشه. لطفاً فایل پایگاه داده خالی را به همراه کوئری ای که اجرا می کنید برای بررسی بیشتر ضمیمه کنید.
    در حالت کلی چند مسئله حائز اهمیته. اول اینکه در صورتی که نیازه داده های زیادی با هم وارد دیتابیس بشه بهتره که از array dml استفاده بشه. دوم اینکه اگر فیلدی ایندکس داره قبل از اضافه کردن مقدار زیادی داده بهتره که ایندکس اون رو برداریم و بعد از اینکه داده ها رو اضافه کردیم سپس ایندکس رو برگردونیم. (این موارد رو قبلاً توی راهنمای FireDac خوانده بودم).

    همچنین خوندن این صفحه رو هم پیشنهاد می کنم:
    http://www.da-soft.com/forums/anydac...ray-dml-2.html
    آخرین ویرایش به وسیله BORHAN TEC : شنبه 12 مرداد 1392 در 02:59 صبح

  6. #6
    کاربر دائمی آواتار سعید صابری
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    برازجان
    پست
    1,431

    نقل قول: خراب شدن دیتابیس بعد از هنگ کردن

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

    فعلا در مرحله تست FB هستم هنوز با همدیگر کنار نیومدیم.اگه لطف کنی تست کنید که FB تعداد رکورد حدود 300 - 400 هزار چقدر اینسرت می کنه ممنون میشم.البته با یک اینسرت معمولی.

    فکر کنم خودمون با نقاط قوت ضعف پی ببریم بهتر باشه تا از صفحات "کپی و پست!" موجود نت .

  7. #7
    کاربر دائمی آواتار khorsandreza
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    تبریز
    پست
    776

    نقل قول: خراب شدن دیتابیس بعد از هنگ کردن

    فعلا در مرحله تست FB هستم هنوز با همدیگر کنار نیومدیم.اگه لطف کنی تست کنید که FB تعداد رکورد حدود 300 - 400 هزار چقدر اینسرت می کنه ممنون میشم.البته با یک اینسرت معمولی.
    من پانصد هزار رکورد را با 80 فیلد متنی و عددی حدود 4 الی 6 دقیقه در رایانه های معمولی اگه سرور با کش بالا مثلا 8 مگا کمتر از 3 دقیقه ب استفاده از SP انجام می دم البته قبلا از روش دیگری استفاده می کردم زمان بیشتر می برد 20 الی 25 دقیقه میشد اکه خواستین کدهایش رابراتون بفرستم

  8. #8

    نقل قول: خراب شدن دیتابیس بعد از هنگ کردن

    نقل قول نوشته شده توسط khorsandreza مشاهده تاپیک
    من پانصد هزار رکورد را با 80 فیلد متنی و عددی حدود 4 الی 6 دقیقه در رایانه های معمولی اگه سرور با کش بالا مثلا 8 مگا کمتر از 3 دقیقه ب استفاده از SP انجام می دم البته قبلا از روش دیگری استفاده می کردم زمان بیشتر می برد 20 الی 25 دقیقه میشد اکه خواستین کدهایش رابراتون بفرستم
    اگه کدها رو قرار بدین خیلی بهتره. خوبیش اینه که یک تست یکسان میتونیم انجام بدیم و نتیجه رو همینجا قرار بدیم.
    FB نسخه 2.5 x64
    نظر دوستان چیه؟
    سعید جان کاش میگفتی که از کدوم نسخه استفاده میکنی. Classic server یا super classic یا super server یا embedded؟

  9. #9
    کاربر دائمی آواتار khorsandreza
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    تبریز
    پست
    776

    نقل قول: خراب شدن دیتابیس بعد از هنگ کردن

    در روش قدیمی به این شیوه عمل می کردم

    Function CreateSqlSt:String;
    Begin
    Pstr := 'INSERT INTO MyTB(CESR,SERL,CSAB,FNAM,LNAM,PNAM,MNAM,SHNS,MTAV, DTAV,VAZE,VAZG,VAZM,MAZH,JENS,TABE,';
    Pstr := Pstr+'KARF,DARJ,TAHM,MTAH,DRJM,DRJH,ARSM,ARSH,ZNEG ,ZNEK,HOGS,HSAZ,SMOS,SMAN,CMAS,ZMAS,TAHO,OLAD,OLCH ,VALD,';
    Pstr := Pstr+'TKFL,CDSH,ZMAZ,JAYG,OZV,DOZV,DHAD,DIJD,DBAZ, DVAZ,DFOT,DEAD,DTAG,ENDR,ENMO,ENOM,ENMA,ENKH,DRM1, DRM2,';
    Pstr := Pstr+'DRM3,HMEH,CODM,FLAG,HFLG,CODV,CODK,EMAS,CODR ,OZVK,OZVM,SAZM,HEDE,HZKF,ELAT,SAKH,CDRM,BIMV,HEKM ,TAFK,';
    Pstr := Pstr+'SMOD,SJEB,STAD,SASH,SAZD,SSRB,SBSJ,SDLT,SNOD ,SFAR,SZEN,SENT,SBKR,SMBH,NIRO,TAR,OS_CODE,';
    Pstr := Pstr+'VAZEYAT,YEGM,MHLP,CKAN,DBAZ1,DTAV1,DOZV1,CHK ,PK_ID) Values(';
    PStr := PStr+'"'+ADO_IN300CESR.AsString +'",';
    PStr := PStr+'"00",';
    PStr := PStr+'"'+ADO_IN300CSAB.AsString +'",';
    PStr := PStr+'"'+GetreplChar(ADO_IN300FNAM.AsString) +'",';
    PStr := PStr+'"'+GetreplChar(ADO_IN300LNAM.AsString) +'",';
    PStr := PStr+'"'+Copy(ADO_IN300PNAM.AsString,1,10) +'",';
    PStr := PStr+'"'+ADO_IN300MNAM.AsString +'",';
    PStr := PStr+'"'+ADO_IN300SHNS.AsString +'",';
    PStr := PStr+'"'+ADO_IN300MTAV.AsString +'",';
    PStr := PStr+'"'+ADO_IN300DTAV.AsString +'",';
    PStr := PStr+'"'+ADO_IN300VAZE.AsString +'",';
    PStr := PStr+'"'+ADO_IN300VAZG.AsString +'",';
    PStr := PStr+'"'+ADO_IN300VAZM.AsString +'",';
    PStr := PStr+'"'+ADO_IN300MAZH.AsString +'",';
    PStr := PStr+'"'+ADO_IN300JENS.AsString +'",';
    PStr := PStr+'"'+ADO_IN300TABE.AsString +'",';
    PStr := PStr+'"'+ADO_IN300KARF.AsString +'",';
    PStr := PStr+'"'+ADO_IN300DARJ.AsString +'",';
    PStr := PStr+'"'+ADO_IN300TAHM.AsString +'",';
    PStr := PStr+'"'+ADO_IN300MTAH.AsString +'",';
    PStr := PStr+'"'+ADO_IN300DRJM.AsString +'",';
    PStr := PStr+'"'+ADO_IN300DRJH.AsString +'",';
    PStr := PStr+'"'+ADO_IN300ARSM.AsString +'",';
    PStr := PStr+'"'+ADO_IN300ARSH.AsString +'",';
    PStr := PStr+'"'+ADO_IN300ZNEG.AsString +'",';
    PStr := PStr+'"'+ADO_IN300ZNEK.AsString +'",';
    PStr := PStr+ ADO_IN300HOGS.AsString +' ,';
    PStr := PStr+'"'+ADO_IN300HSAZ.AsString +'",';
    PStr := PStr+'"'+ADO_IN300SMOS.AsString +'",';
    PStr := PStr+'"'+ADO_IN300SMAN.AsString +'",';
    PStr := PStr+'"'+ADO_IN300CMAS.AsString +'",';
    PStr := PStr+'"'+ADO_IN300ZMAS.AsString +'",';
    PStr := PStr+'"'+ADO_IN300TAHO.AsString +'",';
    PStr := PStr+'"'+ADO_IN300OLAD.AsString +'",';
    PStr := PStr+'"'+ADO_IN300OLCH.AsString +'",';
    PStr := PStr+'"'+ADO_IN300VALD.AsString +'",';
    PStr := PStr+'"'+ADO_IN300TKFL.AsString +'",';
    PStr := PStr+'"'+ADO_IN300CDSH.AsString +'",';
    PStr := PStr+'"'+ADO_IN300ZMAZ.AsString +'",';
    PStr := PStr+'"'+ADO_IN300JAYG.AsString +'",';
    PStr := PStr+'"'+ADO_IN300OZV .AsString +'",';
    PStr := PStr+'"'+ADO_IN300DOZV.AsString +'",';
    PStr := PStr+'"'+ADO_IN300DHAD.AsString +'",';
    PStr := PStr+'"'+ADO_IN300DIJD.AsString +'",';
    PStr := PStr+'"'+ADO_IN300DBAZ.AsString +'",';
    PStr := PStr+'"'+ADO_IN300DVAZ.AsString +'",';
    PStr := PStr+'"'+ADO_IN300DFOT.AsString +'",';
    PStr := PStr+'"'+ADO_IN300DEAD.AsString +'",';
    PStr := PStr+'"'+ADO_IN300DTAG.AsString +'",';
    PStr := PStr+'"'+ADO_IN300ENDR.AsString +'",';
    PStr := PStr+'"'+ADO_IN300ENMO.AsString +'",';
    PStr := PStr+'"'+ADO_IN300ENOM.AsString +'",';
    PStr := PStr+'"'+ADO_IN300ENMA.AsString +'",';
    PStr := PStr+'"'+ADO_IN300ENKH.AsString +'",';
    PStr := PStr+'"'+ADO_IN300DRM1.AsString +'",';
    PStr := PStr+'"'+ADO_IN300DRM2.AsString +'",';
    PStr := PStr+'"'+ADO_IN300DRM3.AsString +'",';
    PStr := PStr+'"'+ADO_IN300HMEH.AsString +'",';
    PStr := PStr+'"'+ADO_IN300CODM.AsString +'",';
    PStr := PStr+'"'+ADO_IN300FLAG.AsString +'",';
    PStr := PStr+'"'+ADO_IN300HFLG.AsString +'",';
    PStr := PStr+'"'+ADO_IN300CODV.AsString +'",';
    PStr := PStr+'"'+ADO_IN300CODK.AsString +'",';
    PStr := PStr+'"'+ADO_IN300EMAS.AsString +'",';
    PStr := PStr+'"'+ADO_IN300CODR.AsString +'",';
    PStr := PStr+'"'+ADO_IN300OZVK.AsString +'",';
    PStr := PStr+'"'+ADO_IN300OZVM.AsString +'",';
    PStr := PStr+'"'+ADO_IN300SAZM.AsString +'",';
    PStr := PStr+'"'+ADO_IN300HEDE.AsString +'",';
    PStr := PStr+'"'+ADO_IN300HZKF.AsString +'",';
    PStr := PStr+'"'+ADO_IN300ELAT.AsString +'",';
    PStr := PStr+'"'+ADO_IN300SAKH.AsString +'",';
    PStr := PStr+'"'+ADO_IN300CDRM.AsString +'",';
    PStr := PStr+'"'+ADO_IN300BIMV.AsString +'",';
    PStr := PStr+'"'+ADO_IN300HEKM.AsString +'",';
    PStr := PStr+'"'+ADO_IN300TAFK.AsString +'",';
    PStr := PStr+'"'+ADO_IN300SMOD.AsString +'",';
    PStr := PStr+'"'+ADO_IN300SJEB.AsString +'",';
    PStr := PStr+'"'+ADO_IN300STAD.AsString +'",';
    PStr := PStr+'"'+ADO_IN300SASH.AsString +'",';
    PStr := PStr+'"'+ADO_IN300SAZD.AsString +'",';
    PStr := PStr+'"'+ADO_IN300SSRB.AsString +'",';
    PStr := PStr+'"'+ADO_IN300SBSJ.AsString +'",';
    PStr := PStr+'"'+ADO_IN300SDLT.AsString +'",';
    PStr := PStr+'"'+ADO_IN300SNOD.AsString +'",';
    PStr := PStr+'"'+ADO_IN300SFAR.AsString +'",';
    PStr := PStr+'"'+ADO_IN300SZEN.AsString +'",';
    PStr := PStr+'"'+ADO_IN300SENT.AsString +'",';
    PStr := PStr+'"'+ADO_IN300SBKR.AsString +'",';
    PStr := PStr+'"'+ADO_IN300SMBH.AsString +'",';
    PStr := PStr+'"'+ADO_IN300NIRO.AsString +'",';
    PStr := PStr+'"'+ADO_IN300TAR.AsString +'",';
    PStr := PStr+'"'+Copy(ADO_IN300CSAB.AsString,1,2)+'00' +'",';
    PStr := PStr+'"'+ADO_IN300VAZE.AsString+ADO_IN300VAZG.AsSt ring+ADO_IN300VAZM.AsString +'",';
    PStr := PStr+'"'+Copy(ADO_IN300YEGM.AsString,1,21) +'",';
    PStr := PStr+'"'+Copy(ADO_IN300MHLP.AsString,1,11) +'",';
    PStr := PStr+'"'+ADO_IN300CKAN.AsString +'",';
    PStr := PStr+'"'+Copy(ADO_IN300DBAZ.AsString,1,4) +'",';
    PStr := PStr+'"'+Copy(ADO_IN300DTAV.AsString,1,4) +'",';
    PStr := PStr+'"'+Copy(ADO_IN300DOZV.AsString,1,4) +'",1,';
    Result := PStr;
    End;



    ولی حالا با SP انجام می دم من چون اطلاعات را از طریق فایل اکسس دریافت می کنم و مجبورم رکورد برکورد به پایگاه داده اضافه بکنم


    INSERT INTO MyTB(CESR,SERL,CSAB,FNAM,LNAM,PNAM,MNAM,SHNS,MTAV, DTAV,VAZE,VAZG,VAZM,MAZH,JENS,TABE,
    KARF,DARJ,TAHM,MTAH,DRJM,DRJH,ARSM,ARSH,ZNEG,ZNEK, HOGS,HSAZ,SMOS,SMAN,CMAS,ZMAS,TAHO,OLAD,OLCH,VALD,
    TKFL,CDSH,ZMAZ,JAYG,OZV,DOZV,DHAD,DIJD,DBAZ,DVAZ,D FOT,DEAD,DTAG,ENDR,ENMO,ENOM,ENMA,ENKH,DRM1,DRM2,
    DRM3,HMEH,CODM,FLAG,HFLG,CODV,CODK,EMAS,CODR,OZVK, OZVM,SAZM,HEDE,HZKF,ELAT,SAKH,CDRM,BIMV,HEKM,TAFK,
    SMOD,SJEB,STAD,SASH,SAZD,SSRB,SBSJ,SDLT,SNOD,SFAR, SZEN,SENT,SBKR,SMBH,NIRO,TAR,OS_CODE,
    VAZEYAT,MHLP,PARD,NSBT,NSBG,NSBM,YEGM,CKAN,DBAZ1,D TAV1,DOZV1,PK_ID)
    VALUES(:CESR,'00',:CSAB,:FNAM,:LNAM,:PNAM,:MNAM,:S HNS,:MTAV,:DTAV,:VAZE,:VAZG,:VAZM,
    :MAZH,:JENS,:TABE,:KARF,:DARJ,:TAHM,:MTAH,:DRJM,:D RJH,:ARSM,:ARSH,:ZNEG,:ZNEK,
    Cast(:HOGS as Double precision),:HSAZ,:SMOS,:SMAN,:CMAS,:ZMAS,:TAHO,:OL AD,:OLCH,:VALD,:TKFL,:CDSH,:ZMAZ,
    :JAYG,:OZV,:DOZV,:DHAD,:DIJD,:DBAZ,:DVAZ,:DFOT,:DE AD,:DTAG,:ENDR,:ENMO,:ENOM,
    :ENMA,:ENKH,:DRM1,:DRM2,:DRM3,:HMEH,:CODM,:FLAG,:H FLG,:CODV,:CODK,:EMAS,:CODR,
    :OZVK,:OZVM,:SAZM,:HEDE,:HZKF,:ELAT,:SAKH,:CDRM,:B IMV,:HEKM,:TAFK,:SMOD,:SJEB,
    :STAD,:SASH,:SAZD,:SSRB,:SBSJ,:SDLT,:SNOD,:SFAR,:S ZEN,:SENT,:SBKR,:SMBH,:NIRO,
    :TAR,UDF_COPY(:CSAB,1,2)||'00',(:VAZE||:VAZG||:VAZ M),:MHLP,0,'00','00','00',
    :YEGM,:CKAN,
    udf_copy(:DBAZ,1,4),
    udf_copy(:DTAV,1,4),
    udf_copy(:DOZV,1,4),
    0);

    البته ابزاری غیر بصری که برای این کار استفاده می کنم کامپپوننت SqlDirect است میکنم
    بشکل زیر
    تصویر اولی زمان طراحی
    تصویر دوم حین اجراء
    عکس های ضمیمه عکس های ضمیمه

  10. #10
    کاربر دائمی آواتار tomalaki
    تاریخ عضویت
    خرداد 1388
    محل زندگی
    شیراز
    سن
    35
    پست
    156

    نقل قول: خراب شدن دیتابیس بعد از هنگ کردن

    من یه بار با استفاده از کدنویسی دلفی امتحان کردم. mysql توی 3-5 ثانیه اینزرت نکرد که! یادم نیست چه مقدار، اما فایر برد توی یک دقیقه بیشتر اینزرت کرده بود. من شنیدم 2-3 ثانیه توسط mysql توی لینوکس صورت میگیره نه ویندوز.

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

  11. #11
    کاربر دائمی آواتار کامروا
    تاریخ عضویت
    دی 1388
    محل زندگی
    ایالات متحده جهرم
    پست
    535

    نقل قول: خراب شدن دیتابیس بعد از هنگ کردن

    یک تست انجام دادم.

    ثبت ۱ میلیون رکورد در جدولی دارای 2 فیلد ID و Name.

    ساختار جدول :
    CREATE TABLE test_table 
    (
    ID int primary key,
    NAME varchar(50)
    )


    MySQL 5.5.32
    Firebird 2.5.1 super

    نتایج :

    زمان صرف شده ثبت ۱ میلیون رکورد:

    در MySQL برابر با 38.25 ثانیه (خوبه انصافا)
    در Firebird برابر با 831.04 ثانیه. چیزی حدود ۱۳ دقیقه.

    زمان واکشی اطلاعات :
    SELECT * FROM test_table


    در MySQL برابر با 78 ثانیه.
    در Firebird برابر با 138 ثانیه.

    برای ثبت اطلاعات از SP استفاده کردم :

    MySQL :
    delimiter $$

    CREATE PROCEDURE `sp_test`(IN start_val int, IN end_val int)
    BEGIN
    declare i int;
    set i = start_val;
    start transaction;
    while i <= end_val DO
    insert into test_table(id, name) values(i, concat('Name ', i));
    set i = i + 1;
    END while;
    commit;
    END$$


    CALL sp_test(1, 1000000);

    Firebird :
    SET TERM ^ ;

    CREATE PROCEDURE SP_TEST (START_VAL integer, END_VAL integer )
    AS
    declare variable i integer;
    BEGIN
    i = start_val;
    while (i <= end_val) do
    begin
    insert into test_table(ID, NAME) values(:i,'Name '||:i);
    i = i + 1;
    end
    END^


    EXECUTE PROCEDURE sp_test(1, 1000000); commit;

    این تست در سیستم عامل لینوکس انجام دادم.
    برای هر دو RDBMS، از محیط Command Line استفاده کردم.
    آخرین ویرایش به وسیله کامروا : یک شنبه 13 مرداد 1392 در 01:38 صبح

  12. #12
    کاربر دائمی آواتار khorsandreza
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    تبریز
    پست
    776

    نقل قول: خراب شدن دیتابیس بعد از هنگ کردن

    به منظور تست واقعی همین حالا از طریق دستور SP شش میلیون رکورد را با ساختار زیر در مدت 183 ثانیه اضافه کردم ساختار ببینید تازه فایربرد نبود Interbase 7.1 بود
    CREATE TABLE NewTestTB (
    PKID Integer Not Null,
    CESR VARCHAR(11),
    SERL VARCHAR(2),
    TAR VARCHAR(4),
    CODC VARCHAR(9),
    CODP VARCHAR(13),
    CODV VARCHAR(13),
    SHOB VARCHAR(4),
    SHKH VARCHAR(4),
    MHLV VARCHAR(6),
    TARB VARCHAR(6),
    TGHE VARCHAR(3),
    MABG VARCHAR(9),
    MKAS VARCHAR(9),
    KOLB VARCHAR(9),
    ALBV VARCHAR(9),
    CODB VARCHAR(4),
    SHOM VARCHAR(8),
    NKS VARCHAR(30),
    TKS VARCHAR(12),
    OLAV VARCHAR(1),
    VAZE VARCHAR(6),
    SAZM VARCHAR(1),
    CSAB VARCHAR(4),
    MBG VARCHAR(9),
    OS_CODE VARCHAR(4)
    );

    CREATE INDEX NewTestTBTAR_IDX ON NewTestTB(TAR);

    CREATE INDEX NewTestTB_IDX ON NewTestTB(CESR, SERL, TAR);



    شکل دستور افزودن


    INSERT INTO NewTestTB(CESR,SERL,TAR,CODC,CODP,CODV,SHOB,SHKH,M HLV,TARB,TGHE,MABG,MKAS,KOLB,ALBV,CODB,SHOM,NKS,TK S,OLAV,VAZE,SAZM,CSAB,MBG,OS_CODE)
    Select CESR,SERL,TAR,CODC,CODP,CODV,SHOB,SHKH,MHLV,TARB,T GHE,MABG,MKAS,KOLB,ALBV,CODB,SHOM,NKS,TKS,OLAV,VAZ E,SAZM,CSAB,MBG,OS_CODE From IN_200



    که یک تریگر و یک GENERATOR نیر اکتیو بودند که GENERATOR ستون بنام PK_ID را بصور خودکار شماره گذاری می کند که آن ستون در اینسرت منظور نشده
    این هم ساختار دیتابیس من است
    CREATE DATABASE "localhost:E:\MVF.gdb" USER "SYSDBA" PASSWORD "masterkey" PAGE_SIZE 4096 ;
    آخرین ویرایش به وسیله khorsandreza : شنبه 12 مرداد 1392 در 22:06 عصر

  13. #13
    کاربر دائمی آواتار سعید صابری
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    برازجان
    پست
    1,431

    نقل قول: خراب شدن دیتابیس بعد از هنگ کردن

    سعید جان کاش میگفتی که از کدوم نسخه استفاده میکنی. Classic server یا super classic یا super server یا embedded؟
    super server استفاده می کنم.

    روش کامروا خوب نیست چون از حلقه استفاده کرده.من هم از همون روش khorsandreza استفاده کردم تنها فرقش این بود جدول من 2 فیلد داشت. زمان khorsandreza خیلی بهتر بوده

    شاهین نوبت تست شماست.

  14. #14
    کاربر دائمی آواتار khorsandreza
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    تبریز
    پست
    776

    نقل قول: خراب شدن دیتابیس بعد از هنگ کردن

    دوستان به یک مطلب دقت فرمودید مبحث PageSize من پایگاه داده را به ان صورت ساختم PAGE_SIZE 4096 ; هرچند کمی سایز دیتابیس نسبت PAGE_SIZE 1024 ; بزرکتر است ولی فکر می کنم (شاید هم اشتباه می کنم) سرعت Insert اطلاعات بیشتر است .
    ضمننا فکر می کنم روش کامروا دقیقا همان کاری که ما انجام می دیم . بنظرم نباید چندان فرق داشته باشه
    من گاها نیاز میشه رکورد به رکورد اطلاعاتی را بروز بکنم از روش
    For Select PKID,Name from MyTB 

    استفاده میکنم سرعت خوبی دارم و حالا هم اعتقاد دارم بدون اندیکس گذاری سرعت کند میشه .

  15. #15

    نقل قول: خراب شدن دیتابیس بعد از هنگ کردن

    سلام
    من الان توی شرکت هستم و نمیتونم تست کنم. به نظر من باید از Clasic Server استفاده کنیدچون میتونه از چند cpu core استفاده کنه ولی Super Server به طور پیشفرض نمیتونه (برای این که این قابلیت رو فعال کنیم باید تنظیماتش رو از داخل فایل firebird.conf تغییر بدیم) و به خاطر همین کندتره. Super Server برای جاهایی خوبه که سرور ضعیف باشه. موقعی که یه زمان خوب برای تست پیدا کنم تستش میکنم ولی متاسفانه امروز نمیتونم. راستی یه نکته مهم دیگه هم وجود داره: اگه فایل پایگاه داده درون درایوی باشه که در موقعیت خارجی تره دیسک سخت باشه سرعت خوندن و نوشتن خیلی بالاتر میره(یعنی باید تا جایی که امکان داره از مرکز دیسک سخت دورتر باشه!)
    یا حق...
    آخرین ویرایش به وسیله BORHAN TEC : یک شنبه 13 مرداد 1392 در 13:10 عصر

  16. #16
    کاربر دائمی آواتار کامروا
    تاریخ عضویت
    دی 1388
    محل زندگی
    ایالات متحده جهرم
    پست
    535

    نقل قول: خراب شدن دیتابیس بعد از هنگ کردن

    نقل قول نوشته شده توسط Object Pascal مشاهده تاپیک
    Super Server به طور پیشفرض نمیتونه (برای این که این قابلیت رو فعال کنیم باید تنظیماتش رو از داخل فایل firebird.conf تغییر بدیم) ..
    آره شاهین جان ولی ظاهرا این فقط واسه ویندوزه.

    توی لینوکس کلا CpuAffinityMask درون فایل firebird.conf کامنت شده و غیرفعاله.

  17. #17
    کاربر دائمی آواتار tomalaki
    تاریخ عضویت
    خرداد 1388
    محل زندگی
    شیراز
    سن
    35
    پست
    156

    نقل قول: خراب شدن دیتابیس بعد از هنگ کردن

    دوستان، من با روش کامروا روی ویندوز 64 بیتی و با فایربرد 64 بیتی 2.5.2 و مای اسکیوال 5.5.24 امتحان کردم نتیجه اینزرت به شرح زیر هست:
    یک میلیون اینزرت

    مای اسکوال: 29.281 ثانیه
    فایربرد: 23 ثانیه

    حذف هم مای اسکوال: 8.90 ثانیه
    فایربرد: 20.775 ثانیه ( تصحیح میشه: 10.860 ثانیه)

    زمان فچ کردن فایر برد: 6.025
    آخرین ویرایش به وسیله tomalaki : یک شنبه 13 مرداد 1392 در 21:49 عصر

  18. #18

    نقل قول: خراب شدن دیتابیس بعد از هنگ کردن

    توی لینوکس کلا CpuAffinityMask درون فایل firebird.conf کامنت شده و غیرفعاله.
    برای تغییر تنظیمات پیش فرض باید این مشخصات رو از حالت کامنت شده خارج کنید(دقیقاً مثل تغییر پورت و ...). درسته این گزینه فقط برای ویندوزه. من الان لینوکس ندارم. میشه با نسخه کلاسیک هم تست کنی؟

  19. #19
    کاربر دائمی آواتار سعید صابری
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    برازجان
    پست
    1,431

    نقل قول: خراب شدن دیتابیس بعد از هنگ کردن

    حلقه فکر نکنم مناسب برای تست باشه من با حلقه استفاده می کنم به راحتی اینسرت میشه ولی وقتی محتویات یک جدول در جدول دیگه اینسرت می کنم تعداد که زیاد باشه ibexpert با اون همه ادعاش هنگ کرد فقط EMS بدون دردسر انجام داد.البته من تنظیمات پیش فرض استفاده می کنم.


    tomalaki جان نگفتی چه تعداد رکورد اینسرت کردی؟

    راستی دوستان چرا حجم فایل دیتابیس اینقدر زیاده؟ تنظیمات خاصی داره؟

  20. #20
    کاربر دائمی آواتار tomalaki
    تاریخ عضویت
    خرداد 1388
    محل زندگی
    شیراز
    سن
    35
    پست
    156

    نقل قول: خراب شدن دیتابیس بعد از هنگ کردن

    نقل قول نوشته شده توسط سعید صابری مشاهده تاپیک
    حلقه فکر نکنم مناسب برای تست باشه من با حلقه استفاده می کنم به راحتی اینسرت میشه ولی وقتی محتویات یک جدول در جدول دیگه اینسرت می کنم تعداد که زیاد باشه ibexpert با اون همه ادعاش هنگ کرد فقط EMS بدون دردسر انجام داد.البته من تنظیمات پیش فرض استفاده می کنم.


    tomalaki جان نگفتی چه تعداد رکورد اینسرت کردی؟

    راستی دوستان چرا حجم فایل دیتابیس اینقدر زیاده؟ تنظیمات خاصی داره؟
    یک میلیون اینزرت کردم. حجم فایل فایربرد 75 مگ و مای اسکیوال 329 مگ هست.
    آخرین ویرایش به وسیله tomalaki : یک شنبه 13 مرداد 1392 در 21:50 عصر

  21. #21
    کاربر دائمی آواتار سعید صابری
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    برازجان
    پست
    1,431

    نقل قول: خراب شدن دیتابیس بعد از هنگ کردن

    یک میلیون اینزرت کردم. حجم فایل فایربرد 75 مگ و مای اسکیوال 329 مگ هست.
    جالبه من 5160960 شد 160 MB با Mysql.

    نمیدونم چرا اینسرت که شما با FB انجام میدید سریعتر و کم حجم تر از منه.اما اینسرت های من با Mysql سریع تر و دیتابیس کم حجم تره!؟

  22. #22

    نقل قول: خراب شدن دیتابیس بعد از هنگ کردن

    دیتابیس کم حجم تره!؟
    بیشتر به خاطر تنظیمات PageSize هست.

  23. #23
    کاربر دائمی آواتار سعید صابری
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    برازجان
    پست
    1,431

    نقل قول: خراب شدن دیتابیس بعد از هنگ کردن

    بیشتر به خاطر تنظیمات PageSize هست.
    احسن حاجی.دقیقا به خاط همین دلیل بود. چون ساز بالا بود زود حجم دیتابیس بالا می رفت و باعث کندی و هنگ کردن میشد.

    الان یک جدول دو فیلد یک فیلد Autoinc و یک فیلد از نوع کاراکتر تست کردم روی MYsql و fb.
    fb شد حدود 27
    mysql شد 12
    تقریبا 1300000.

    البته حجم دیتابیس Mysql نیز کمتر بود.

  24. #24

    نقل قول: خراب شدن دیتابیس بعد از هنگ کردن

    fb شد حدود 27
    mysql شد 12
    باز هم نمیشه گفت که fb سرعتش کمتره. اگه کسی به تنظیمات fb مسلط باشه میتونه سرعتش رو به شکل دیوانه واری بالا ببره. من دارم یه تحقیقات درست و حسابی ای روی بالابردن کارایی fb انجام میدم و در همین امروز به نتایج خیلی خوبی رسیدم. دوست دارم که این توضیحات رو در قالب یک مقاله در مجله برنامه نویس(!) قرار بدم.
    البته به نظر من دیگه نباید روی این موضوع حساس بشیم. فکر نمیکنم که موقعیتی وجود داشته باشه که ما مجبور بشیم 1 میلیون رکورد رو در کمتر از یک دقیقه در پایگاه داده قرار بدیم. از اینجا به بعد این بحث ها کاربرد تجاری نداره و بحث آکادمیکیه.(مگر اینکه بخواهیم نام و نام خانوادگی هر دونه ای از ذرات معلق در هوا رو با هم ثبت کنیم! )
    البته حجم دیتابیس Mysql نیز کمتر بود.
    باز هم دلیل نمیشه و این مورد هم به تنظیمات بر میگرده. یه جاهایی بنا به دلایلی بهتره که PageSize بزرگ باشه و یه جاهایی نباید اینطوری باشه.
    آخرین ویرایش به وسیله BORHAN TEC : سه شنبه 15 مرداد 1392 در 01:12 صبح

  25. #25
    کاربر دائمی آواتار tomalaki
    تاریخ عضویت
    خرداد 1388
    محل زندگی
    شیراز
    سن
    35
    پست
    156

    نقل قول: خراب شدن دیتابیس بعد از هنگ کردن

    نقل قول نوشته شده توسط Object Pascal مشاهده تاپیک
    دوست دارم که این توضیحات رو در قالب یک مقاله در مجله برنامه نویس(!) قرار بدم.
    لطفا یه مقاله هم برای امن کردن پایگاه داده روی وی پی اسی که قراره روی اینترنت قرار بگیره و پایگاه داده یک .بسایت و یک برنامه ویندوزی بشه هم قرار بدید.

  26. #26
    کاربر دائمی آواتار کامروا
    تاریخ عضویت
    دی 1388
    محل زندگی
    ایالات متحده جهرم
    پست
    535

    نقل قول: خراب شدن دیتابیس بعد از هنگ کردن

    نقل قول نوشته شده توسط سعید صابری مشاهده تاپیک
    super server استفاده می کنم.

    روش کامروا خوب نیست چون از حلقه استفاده کرده.من هم از همون روش khorsandreza استفاده کردم تنها فرقش این بود جدول من 2 فیلد داشت. زمان khorsandreza خیلی بهتر بوده
    ببخشید سعید جون ولی من یکم گیج شدم !
    چطوری بدون حلقه اطلاعات ثبت میکنی ؟ تا منم به روش شما تست کنم ...

    میشه با نسخه کلاسیک هم تست کنی؟
    با کلاسیک هم تست کردم فرقی نکرد.

    یه چیز عجیب!
    مثلا الان ۱ میلیون رکورد ثبت میکنم میشه ۸۰۰ ثانیه بعد دوباره ثبت میکنم میشه ۲۰۰ ثانیه ! دوباره ثبت میکنم میشه ۴۰۰ ثانیه !!!

    چرا زمان ثبت اطلاعات، اینقدر بالا پایین میشه ؟!

  27. #27
    کاربر دائمی آواتار tomalaki
    تاریخ عضویت
    خرداد 1388
    محل زندگی
    شیراز
    سن
    35
    پست
    156

    نقل قول: خراب شدن دیتابیس بعد از هنگ کردن

    نقل قول نوشته شده توسط کامروا مشاهده تاپیک
    مثلا الان ۱ میلیون رکورد ثبت میکنم میشه ۸۰۰ ثانیه بعد دوباره ثبت میکنم میشه ۲۰۰ ثانیه ! دوباره ثبت میکنم میشه ۴۰۰ ثانیه !!!

    چرا زمان ثبت اطلاعات، اینقدر بالا پایین میشه ؟!
    چرا زمان های شما این همه بالا هست؟

  28. #28
    کاربر جدید
    تاریخ عضویت
    اسفند 1391
    محل زندگی
    تهران
    پست
    3

    نقل قول: خراب شدن دیتابیس بعد از هنگ کردن

    با سلام خدمت دوستان

    Enable یا Disable بودن گزینه Forced Writes در تنظیمات بانک اطلاعاتی بر روی سرعت درج اطلاعات تاثیر داره و در بعضی منابع ذکر شده که Disable نمودن آن سرعت رو به میزان قابل توجهی بالا می بره ولی از طرف دیگه ریسک خرابی بانک اطلاعاتی افزایش پیدا می کنه و فقط در صورتی بایستی استفاده بشه که از سرور بسیار خوب و مطمئن استفاده بشه و در زمانهای متناسب پشتیبان اطلاعاتی تهیه بشه.

    با توجه به عنوان تاپیک «خراب شدن دیتابیس بعد از هنگ کردن» فکر می کنم خراب شدن بانک اطلاعاتی در صورت ریست شدن و هنگ دستگاه بواسطه همین Disable شدن گزینه مذکور اتفاق افتاده باشه.

    از طرف دیگه اندازه Page Size هم تاثیر داره البته بصورت قانون کلی گفته میشه که اگر در بانک اطلاعاتی و در جداول پر کاربرد رکوردهایی با طول بیشتر از 2048 بایت وجود داره نبایستی Page Size کمتر 2048 باشه.

    من با Interbase 2009 کار می کنم که از نظر ثبات کار بهتر از ورژن های قبلی هست. در مواردی بانکهای اطلاعاتی که تحت ورژن های قبلی خراب شده بود، فقط با باز کردن توسط Interbase 2009 ریکاوری شد.
    آخرین ویرایش به وسیله SoheilZarian : چهارشنبه 12 فروردین 1394 در 14:23 عصر

تاپیک های مشابه

  1. سوال: مخفی شدن دیتابیس بعد از نصب SQL 2000 نسخه ی Desktop Engin (چگونه ؟)
    نوشته شده توسط hamid-nic در بخش SQL Server
    پاسخ: 13
    آخرین پست: دوشنبه 16 فروردین 1389, 16:58 عصر
  2. خطا در رجیستر شدن کامپوننت بعد از رجیستر کردن آن
    نوشته شده توسط relax_cp در بخش کامپوننت ها و ابزارهای کاربردی در VB6
    پاسخ: 3
    آخرین پست: دوشنبه 09 شهریور 1388, 15:25 عصر
  3. قفل شدن IE بعد از وارد کردن اطلاعات
    نوشته شده توسط sasanazizi در بخش ASP.NET Web Forms
    پاسخ: 0
    آخرین پست: پنج شنبه 15 مرداد 1388, 17:37 عصر
  4. خراب شدن فایل بعد از تغییر آیکن
    نوشته شده توسط pm_hamze در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 2
    آخرین پست: سه شنبه 04 تیر 1387, 14:59 عصر
  5. اجرا شدن برنامه بعد از باز کردن هر فایل EXE
    نوشته شده توسط M8SPY_OK در بخش برنامه نویسی در 6 VB
    پاسخ: 1
    آخرین پست: پنج شنبه 25 مرداد 1386, 15:26 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •