ما هي الطرق لنقل البيانات القديمة من أيام 'Y' إلى جدول أرشيف / التاريخ في الخلية؟

StackOverflow https://stackoverflow.com/questions/808039

  •  03-07-2019
  •  | 
  •  

سؤال

وإذا نظرنا إلى نقل البيانات من جدول A إلى الجدول التاريخ B كل يوم X للبيانات التي هو يوم Y القديم وثم إزالة البيانات من الجدول التاريخ B التي مضى عليها أكثر من أيام Z.

ومجرد استكشاف طرق مختلفة لتحقيق ذلك. لذلك سيكون موضع تقدير أي اقتراحات.

مثال للمتغيرات X - 7DAYS Y - 60days مدة ض - 365days

وشكرا

هل كانت مفيدة؟

المحلول

CREATE PROCEDURE prc_clean_tables (Y INT, Z INT)
BEGIN
        BEGIN TRANSACTION;

        DECLARE _now DATETIME;
        SET _now := NOW();

        INSERT
        INTO    b
        SELECT  *
        FROM    a
        WHERE   timestamp < _now - INTERVAL Y DAY;
        FOR UPDATE;

        DELETE
        FROM    a
        WHERE   timestamp < _now - INTERVAL Y DAY;

        DELETE
        FROM    b
        WHERE   timestamp < _now - INTERVAL Z DAY;

        COMMIT;
END

نصائح أخرى

إذا كنت تستخدم الخلية 5.1 ربما كنت قادرة على استخدام جدولة الحدث، بدلا من كرون. أنا لم تستخدم ذلك، ولكن لقد استخدمت شيئا من هذا القبيل في SQL Server.

وهذا يبدو على التوالي إلى الأمام.

وأنت تريد وظيفة كرون ليلا لتشغيل البرنامج النصي.

#crontab -e 

50 11 * * * $HOME/scripts/MyWeeklyArchive.sh

والملف النصي في حد ذاته هو بسيط جدا كذلك. سنقوم فقط استخدام mysqldump وظيفة الآن ()؛

#! /bin/bash

/usr/bin/mysqldump -uUser -pPassword Current_DB Table --where='date < NOW() - INTERVAL 7 DAY' | /usr/bin/mysql -uUser -pPassword archive_DB

هل يمكن أن تشمل فقط هذا الخط في ملف كرون، ولكن لتطويره ومثل أنا أوصي مما يجعل من ملف نصي.

وأبسط طريقة بالطبع سيكون لإدراج الصفوف من الجدول على الانترنت الى طاولة التاريخ ثم القيام الحذف الخاص بك. التفاف أن تصل في SPROC كما يقترح Quassnoi سيكون مثاليا.

وهناك طريقة أخرى يحتمل أن تكون أفضل سيكون للاستفادة من التقسيم . إذا كان لديك الجداول مقسمة بواسطة التاريخ، يجب أن تكون قادرة على تسريع ما لا يقل عن الأجزاء DELETE ببساطة عن طريق التخلي عن التقسيم ذات الصلة. قد يكون جزء INSERT أيضا أسرع لأن جميع الصفوف المدرجة ستأتي من قسم واحد (إذا قمت بإنشاء أقسام حقك).

إذا المخططات هي نفسها، قد يكون هناك حتى نوعا من الحيلة التي من شأنها أن تسمح لك لمجرد نقل أقسام من جدول واحد إلى الآخر على الفور نسبيا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top