PHP'nin Oracle PDO SİL asmak mı?

4 Cevap php

Bu bir hata (5.2.6-Win32 Oracle10g +) Php asılı, ya da ben temelde yanlış bir şey yapıyorum?

try {
    $conn = new PDO($DB,$USER,$PASSWORD);
    $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    //connected
    try {
    	$conn->exec("DELETE FROM MY_TABLE");
    	echo "done";
...

Bu bir hata olup olmadığını Note: Bilmiyorum, ben öyle tahmin ediyorum. Ben hızlı bir aramadan sonra bu bir hata raporu bulamadı Ancak olarak. Ben yanlış bir şey yapıyor olabilir, bu yüzden ben ilk burada sormak istiyorum, ve durumda gelecek kuşaklar için bir başkası benzer bir sorun vardır düşündüm.

4 Cevap

Aynı anda veritabanında oluyor diğer faaliyetler var mı? Evet, ben kilitlenmeleri şüpheli olur. Bazı kaydedilmemiş DML işlem (ler) MY_TABLE bazı satırları kilitleme olabilir.

Eğer geri alma yeteneği ihtiyacınız yoksa, TRUNCATE yerine DELETE kullanmayı düşünebilirsiniz.

A DELETE without a WHERE will (most likely) a full scan of the table. That means it reads every block under the 'high-water mark' - that is every block that has ever been used by the table. So if the table was, at one time, very big, then it can take a very long time to delete just a handful of records. [Because it doesn't 'know' there are only four records until it reads all that space.]

Bir kesiği bu yapmaz. Kullanımda olan herhangi bir blok hızlı bir şekilde kullanılmayan olmak, böylece sadece tablonun yüksek su işareti taşır.

PDO, ne kadar Oracle ile bilmiyorum ama, kullanımda biraz gibi görünüyor çünkü asılı oldukça olası.

A delete from my_table vardır kaç rekorları bağlı olarak biraz zaman alabilir. Ne zamandır bunu asılı olduğu karar vermeden önce bekleyin ve tabloda kaç kayıt edildi mi?

Aynı masada çalışan bir işlem varsa, bu DELETE engelleyebilir.