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

نام تاپیک: خلوت کردن لاگ

  1. #1
    کاربر دائمی آواتار modern_amin
    تاریخ عضویت
    آذر 1389
    محل زندگی
    کنار شما !
    پست
    589

    خلوت کردن لاگ

    سلام
    من لاگ کاربر رو هنگام ورود در نرم افزار میگیرم و در جدول بنام Tlog ذخیره میکنم
    فیلدهای این جدول این سه تا هست
    id_log---name---tarikh

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

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

  2. #2

    نقل قول: خلوت کردن لاگ

    یه چیزی شبیه به این میشه

    DECLARE @t TABLE (id INT IDENTITY(1,1), Name VARCHAR(100), Tarikh VARCHAR(15))
    -------old log------------------
    INSERT INTO @t
    (
    Name,
    Tarikh
    )
    VALUES
    ( 'hamid', -- Name - varchar(100)
    '1398/07/05' -- Tarikh - varchar(15)
    ),('hamid','1398/07/06'),('hamid','1398/07/08')
    ,('hamid','1398/07/06'),('hamid','1398/07/07')
    ,('ali','1398/07/06'),('ali','1398/07/07')
    ,('hamid','1398/07/09')

    ---- new Insert ---------------
    INSERT @t
    (
    Name, Tarikh
    )
    VALUES
    ( 'hamid', '1398/07/09' )
    DELETE @t WHERE id < (SELECT MIN(id) FROM (SELECT TOP (3) id FROM @t WHERE name = 'hamid' ORDER BY id DESC) t)
    AND name = 'hamid'

    SELECT * FROM @t


  3. #3
    کاربر دائمی آواتار modern_amin
    تاریخ عضویت
    آذر 1389
    محل زندگی
    کنار شما !
    پست
    589

    نقل قول: خلوت کردن لاگ

    سلام بر شما
    ممنونم از پاسخگویی شما
    بنظرم این کد افرادی که مثلا بار اول دارند لاگین میکنند (به اون حد 3 نرسیدن) رو هم پاک میکنه که نباید اینگونه باشه

  4. #4
    کاربر دائمی آواتار modern_amin
    تاریخ عضویت
    آذر 1389
    محل زندگی
    کنار شما !
    پست
    589

    نقل قول: خلوت کردن لاگ

    نقل قول نوشته شده توسط hamid_hr مشاهده تاپیک
    یه چیزی شبیه به این میشه

    DECLARE @t TABLE (id INT IDENTITY(1,1), Name VARCHAR(100), Tarikh VARCHAR(15))
    -------old log------------------
    INSERT INTO @t
    (
    Name,
    Tarikh
    )
    VALUES
    ( 'hamid', -- Name - varchar(100)
    '1398/07/05' -- Tarikh - varchar(15)
    ),('hamid','1398/07/06'),('hamid','1398/07/08')
    ,('hamid','1398/07/06'),('hamid','1398/07/07')
    ,('ali','1398/07/06'),('ali','1398/07/07')
    ,('hamid','1398/07/09')

    ---- new Insert ---------------
    INSERT @t
    (
    Name, Tarikh
    )
    VALUES
    ( 'hamid', '1398/07/09' )
    DELETE @t WHERE id < (SELECT MIN(id) FROM (SELECT TOP (3) id FROM @t WHERE name = 'hamid' ORDER BY id DESC) t)
    AND name = 'hamid'

    SELECT * FROM @t

    سلام بر شما
    ممنونم از پاسخگویی شما
    بنظرم این کد افرادی که مثلا بار اول دارند لاگین میکنند (به اون حد 3 نرسیدن) رو هم پاک میکنه که نباید اینگونه باشه

  5. #5

    نقل قول: خلوت کردن لاگ

    بنظرم این کد افرادی که مثلا بار اول دارند لاگین میکنند (به اون حد 3 نرسیدن) رو هم پاک میکنه که نباید اینگونه باشه
    نه اینطور نیست. سه تا لاگ رو همیشه نگه میداره

  6. #6
    کاربر دائمی آواتار modern_amin
    تاریخ عضویت
    آذر 1389
    محل زندگی
    کنار شما !
    پست
    589

    نقل قول: خلوت کردن لاگ

    نقل قول نوشته شده توسط hamid_hr مشاهده تاپیک
    نه اینطور نیست. سه تا لاگ رو همیشه نگه میداره
    شما داری top 3 رو میگیری و بعد ازین سه تا کوچترین id رو میگیری
    خب اگر 3 سطر موجود نباشه یک سطر رو برمیگرده و کوچکترین id هم میشه خودش..

  7. #7
    کاربر دائمی آواتار modern_amin
    تاریخ عضویت
    آذر 1389
    محل زندگی
    کنار شما !
    پست
    589

    نقل قول: خلوت کردن لاگ

    البته میشه با استفاده از IF EXIST و شرط

    Having count(*)>3

    این مشکل رو حل کرد

  8. #8
    کاربر دائمی آواتار modern_amin
    تاریخ عضویت
    آذر 1389
    محل زندگی
    کنار شما !
    پست
    589

    نقل قول: خلوت کردن لاگ

    بنظر شما این اتفاقی که همزمان پاک بشه بعد اینسرت بهتره
    یا توسط ادمین سیستم هر از چندگاهی این اتفاق بیفته؟؟

    (از بعد فشار نیامدن به سرور تاثییر داره یا خیر؟)

  9. #9

    نقل قول: خلوت کردن لاگ

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

  10. #10

    نقل قول: خلوت کردن لاگ

    خب اگر 3 سطر موجود نباشه یک سطر رو برمیگرده و کوچکترین id هم میشه خودش..
    خب کوچکتر از ای دی خودش با اون یوزر وجود نداره و حذف نمیشه

  11. #11
    کاربر دائمی آواتار RED-C0DE
    تاریخ عضویت
    بهمن 1384
    محل زندگی
    31 4E 20 20 54 48 33 20 20 28 72 59 70 54 30 47 33 4E 31 28 20 20 5C 2F 30 52 31 7C 7C 29 20 20 7C 2
    پست
    551

    نقل قول: خلوت کردن لاگ

    اگه نرخ درج و ویرایش و حذف روی جدول بالا باشه، این کارتون زیاد بهینه نیس.

    اگه scale محیط کاربریتون بزرگ هست، یه راه حل خوب، اینه که عملیات پاکسازی لاگ رو بصورت (مثلا) شبانه در تایمی که بار پردازشی سرور کم هست، انجام بدین.
    یعنی از عملیات بیزینس اصلی، این کار رو جدا کنین.

    یا حتی دیتابیس جداگانه ای در نظر بگیرین. یا روی FileGroup جداگانه ای قرار بدین.

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

  1. سوال: تفاوت تعداد مقایسه های مورد نیاز در الگوریتم های متفاوت
    نوشته شده توسط parisa.porseshgar در بخش الگوریتم، کامپایلر، هوش مصنوعی و ساختمان داده ها
    پاسخ: 2
    آخرین پست: چهارشنبه 17 بهمن 1397, 11:45 صبح
  2. کپی کردن اطلاعات دو تیبیل متفاوت در دو دیتابیس متفاوت درون یکدیگر هر 2 میلی ثانیه
    نوشته شده توسط nava_2012 در بخش تحلیل و طراحی بانک اطلاعات
    پاسخ: 0
    آخرین پست: جمعه 22 اسفند 1393, 10:37 صبح
  3. تفاوت ریسپانسیو و بوت استرپ
    نوشته شده توسط somaye-s در بخش طراحی وب (Web Design)
    پاسخ: 42
    آخرین پست: شنبه 30 فروردین 1393, 08:53 صبح
  4. تفاوت row با row-fluid در بوت استراپ؟
    نوشته شده توسط rayanravesh در بخش طراحی وب (Web Design)
    پاسخ: 2
    آخرین پست: سه شنبه 19 آذر 1392, 11:39 صبح

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

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