Вопрос

Это зависает в Php (5.2.6-Win32 + Oracle10g) это ошибка, или я делаю что-то в корне неправильное?

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";
...

Примечание: Я не знаю, ошибка это или нет, я предполагаю, что это так.Однако, поскольку я не смог найти сообщение об ошибке для этого после быстрого поиска.Возможно, я делаю что-то не так, поэтому я решил сначала спросить здесь и для потомков, на случай, если у кого-то еще возникнет подобная проблема.

Это было полезно?

Решение

Выполняются ли другие действия в базе данных одновременно?Если да, то я бы заподозрил тупиковые ситуации.Некоторые незафиксированные транзакции DML могут блокировать некоторые строки MY_TABLE.

Если вам не нужна возможность отката, рассмотрите возможность использования TRUNCATE вместо того, чтобы DELETE.

Другие советы

УДАЛЕНИЕ без указания WHERE приведет (скорее всего) к полному сканированию таблицы.Это означает, что он считывает каждый блок ниже "высокой отметки" - то есть каждый блок, который когда-либо использовался таблицей.Таким образом, если таблица когда-то была очень большой, то удаление всего лишь нескольких записей может занять очень много времени.[Потому что он не "знает", что существует только четыре записи, пока не прочитает все это пространство.]

Усечение этого не делает.Он просто перемещает отметку уровня воды в таблице, так что все использовавшиеся блоки быстро становятся неиспользуемыми.

Маловероятно, что он зависает, поскольку PDO, похоже, используется довольно часто, хотя насколько часто с Oracle, я не знаю.

A delete from my_table это может занять некоторое время, в зависимости от количества имеющихся записей.Как долго вы ждали, прежде чем решить, что он завис, и сколько записей было в таблице?

Если в той же таблице выполняется транзакция, это может привести к блокировке вашего УДАЛЕНИЯ.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top