Ben yeniden yazılması / her hafta veya her ay yenilenir gereken bir Oracle veritabanında dört DB tablolar var. Ben standart OCI fonksiyonlarını kullanarak PHP bu senaryoyu yazıyorum, o XML yeni veri okumak ve bu dört tabloları yenilenir. Dört tablo, aşağıdaki özelliklere sahiptir
TABLO A - satırları 2mil kadar, bir birincil anahtar (bir satır max 2K verileri alabilir)
TABLO B - 10mil satır kadar, TABLO A bir yabancı anahtar işaretleme (Bir satır veri maksimum 1100 bayt sürebilir)
TABLO C - 10mil satır, TABLO A bir yabancı anahtar işaret kadar (Bir satır veri maksimum 1100 bayt sürebilir)
TABLO D - 10mil satır kadar, TABLO A bir yabancı anahtar işaretleme (Bir satır veri max 120 bayt sürebilir)
Yani kullanıcı deneyimini zarar vermeden bu tabloları yeniden doldurmanız gerekir. Açıkçası tabloları silemezsiniz ve biraz uzun bir süreç olarak sadece onları yeniden doldurmak.
Ben tüm tabloları silin ve sadece onları yeniden koca bir işlem kabul ettik. Ben işlemin uzunluğu konusunda biraz endişe olsun (henüz bilmiyorum ama bir saat ya da öylesine sürebilir).
Ben bütün tabloların geçici tablo kopyaları oluşturmak ve o yerine doldurmak istedim. Sonra ana tablo DAMLA ve geçici tablolar yeniden adlandırabilirsiniz. Eğer DAMLA yapmak ve onlar her zaman işlemek bir otomobil yapmak gibi bir işlem içinde tablo ALTER ifadeler olamaz ancak. Bu (dört BIRAKMA ve ve dört ALTER TABLE deyimleri) hızlı bir şekilde yapılabilir, ama bir kullanıcı zaman kısa süre içinde bir hata almazsınız garanti edemez gerekir.
Şimdi, iki fikirlerin bir arada, ben o ana tabloları yeniden doldurmak için dört orijinal tabloları DAN delete yapıyor ve sonra ve INSERT INTO geçici tablolar, geçici tablolar yapıyorum düşünüyorum. Burada DDL deyimleri vardır beri, bu tüm bir işlem içinde çalışacak. Daha sonra, ancak bir işlem içinde 60 milyon kayıtları işlemek için gereken bellek (bu da ilk fikir için bir endişe olurdu) belaya gidiyor diye merak.
Ben bu ortak bir senaryo olacağını düşünürdüm. Bunu yapmanın bir standart ya da önerilen bir yolu var mı? Herhangi bir ipucu mutluluk duyacağız. Teşekkürler.