
حذف رکوردها در مقیاس بالا در اوراکل
براي سرعت بخشيدن حذف ركوردها در اوراکل از چند روش مي توان استفاده كرد:
استفاده از partitioning در اوراکل : كه مي توان يكدفعه يك پارتيشن را حذف كرد.
بهينه كردن delete sub query در اورکل
استفاده از bulk delete در اوراکل
حذف كردن index و constrains در اوراکل
استفاده از parallel كردن delete در اوراکل
استفاده از NOARCHIVELOG
تکه تکه كردن حذف اطلاعات مثلا براساس تاريخ
ايجاد دوباره يك جدول با استفاده از create table as select در اوراکل: بسيار در وقت شما صرفه جويي مي كند.
همه چيز بستگي به تعداد جداول و تعداد در هر بار اجرای حذف، دارد. حال مي توانيد به روش زير عمل كنيد: معمولا براي ركوردهاي پايين مثل يك ميليون ايندكس نياز نيست.
در ابتدا بايد parallel DML را enable كنيد چون بصورت پيش فرض غيرفعال مي باشد.
ALTER SESSION ENABLE PARALLEL DML;
ALTER SESSION ENABLE PARALLEL DML;
مي توانيم در اوراکل به دو صورت زير عمل كنيد:
-full table scan
DELETE /*+ parallel(t1,4) full(t1) */
TBL_SELLERS t1
WHERE ROWID > ( SELECT MIN(ROWID) FROM TBL_SELLERS I
WHERE t1.SELLER_CODE=I.SELLER_CODE)
-full table scan
DELETE /*+ parallel(t1,4) full(t1) */
TBL_SELLERS t1
WHERE ROWID > ( SELECT MIN(ROWID) FROM TBL_SELLERS I
WHERE t1.SELLER_CODE=I.SELLER_CODE)
Or
- Index Fast Full Scan
DELETE /*+ parallel(t1,4) parallel_index(t1,4) index_ffs(t1) */
TBL_SELLERS t1
WHERE ROWID > ( SELECT MIN(ROWID) FROM TBL_SELLERS I
WHERE t1.SELLER_CODE=I.SELLER_CODE)
- Index Fast Full Scan
DELETE /*+ parallel(t1,4) parallel_index(t1,4) index_ffs(t1) */
TBL_SELLERS t1
WHERE ROWID > ( SELECT MIN(ROWID) FROM TBL_SELLERS I
WHERE t1.SELLER_CODE=I.SELLER_CODE)
