Aktueller Standort: Startseite> Neueste Artikel> Anleitung zur Verwendung von Parallelitätskontroll- und Verriegelungsmechanismen zwischen PHP- und Oracle -Datenbanken

Anleitung zur Verwendung von Parallelitätskontroll- und Verriegelungsmechanismen zwischen PHP- und Oracle -Datenbanken

M66 2025-07-13

Anleitung zur Verwendung von Parallelitätskontroll- und Verriegelungsmechanismen zwischen PHP- und Oracle -Datenbanken

Bei der Entwicklung von Webanwendungen sind der gleichzeitige Steuerungs- und Verriegelungsmechanismus der Datenbank von entscheidender Bedeutung. Insbesondere in hohen Parallelitätsszenarien können, wenn der gleichzeitige Datenzugriff nicht ordnungsgemäß behandelt wird, Datenkonsistenz- und Integritätsprobleme verursacht. In diesem Artikel wird vorgestellt, wie der Mechanismus und Sperrmechanismus der Parallelitätskontrolle in der Oracle -Datenbank in PHP verwendet wird, zwei gemeinsame Parallelitätsregelungsmethoden anzeigen - pessimistische Parallelitätskontrolle und optimistische Parallelitätskontrolle und relevante Code -Beispiele angeben.

Pessimistische gleichzeitige Kontrolle

Die pessimistische Genauigkeitskontrolle bezieht sich auf die Verriegelung von Daten, bevor ein Vorgang durchgeführt wird, um zu verhindern, dass andere Benutzer dieselben Daten gleichzeitig ändern. In der Oracle -Datenbank können Sie die für Update -Anweisung verwenden, um eine pessimistische Parallelitätskontrolle zu erreichen.

Hier ist ein Codebeispiel, das pessimistische Parallelitätskontrolle in PHP verwendet:

 
<?php
// verbindenOracleDatenbank
$conn = oci_connect('username', 'password', 'database');

// Fragen Sie die Daten ab, die aktualisiert und gesperrt werden müssen
$query = "SELECT * FROM my_table WHERE id = :id FOR UPDATE";
$stmt = oci_parse($conn, $query);
$id = 1;
oci_bind_by_name($stmt, ':id', $id);
oci_execute($stmt);

// Daten aktualisieren
$query = "UPDATE my_table SET field = :field WHERE id = :id";
$stmt = oci_parse($conn, $query);
$field = 'new value';
oci_bind_by_name($stmt, ':field', $field);
oci_bind_by_name($stmt, ':id', $id);
oci_execute($stmt);

// 提交事务并关闭verbinden
oci_commit($conn);
oci_close($conn);
?>

Im obigen Code werden zuerst die Datenzeilen, die aktualisiert werden müssen, über die SELECT ... für die Aktualisierungsanweisung gesperrt, dann wird die Aktualisierungsoperation durchgeführt, und schließlich wird die Transaktion mit OCI_Commit () übermittelt und die Datenbankverbindung über OCI_CLOSE () geschlossen.

Optimistische Parallelitätskontrolle

Im Gegensatz zur pessimistischen Parallelitätskontrolle sperrt die optimistische Parallelitätskontrolle nicht vor dem Betrieb, prüft jedoch, ob die Daten von anderen Benutzern geändert wurden, wenn die Daten geändert werden. In Oracle kann eine optimistische Parallelitätskontrolle durch die Versionen zwischen der Anweisung erreicht werden.

Hier ist ein Code -Beispiel, bei dem die optimistische Genauigkeitskontrolle in PHP verwendet wird:

 
<?php
// verbindenOracleDatenbank
$conn = oci_connect('username', 'password', 'database');

// Abfragendaten und Versionsinformationen erhalten
$query = "SELECT * FROM my_table WHERE id = :id";
$stmt = oci_parse($conn, $query);
$id = 1;
oci_bind_by_name($stmt, ':id', $id);
oci_execute($stmt);
$row = oci_fetch_array($stmt, OCI_ASSOC);
$oldVersion = $row['VERSION'];

// Daten aktualisieren
$newVersion = $oldVersion + 1;
$query = "UPDATE my_table SET field = :field, version = :newVersion WHERE id = :id AND version = :oldVersion";
$stmt = oci_parse($conn, $query);
$field = 'new value';
oci_bind_by_name($stmt, ':field', $field);
oci_bind_by_name($stmt, ':newVersion', $newVersion);
oci_bind_by_name($stmt, ':id', $id);
oci_bind_by_name($stmt, ':oldVersion', $oldVersion);
oci_execute($stmt);

// Überprüfen Sie die Anzahl der aktualisierten Zeilen
if (oci_num_rows($stmt) == 0) {
    // Update fehlgeschlagen,Die Daten wurden geändert
    oci_rollback($conn);
} else {
    // Erfolgreich aktualisieren
    oci_commit($conn);
}

// 关闭verbinden
oci_close($conn);
?>

Fragen Sie in diesem Code -Beispiel zuerst die Daten ab und erhalten Sie die alten Versionsinformationen. Überprüfen Sie bei der Durchführung eines Updates, ob sich die Daten unter Verwendung der Versionsnummer in der WHERE -Klausel geändert haben. Wenn die Versionsnummern inkonsistent sind, bedeutet dies, dass die Daten von anderen Benutzern geändert wurden und der Aktualisierungsvorgang fehlschlägt und Rollback ausgeführt wird. Andernfalls führen Sie den Einreichungsvorgang durch.

Zusammenfassen

Bei Verwendung von Oracle -Datenbanken in PHP kann die Datenkonsistenz durch pessimistische Parallelitätskontrolle und optimistische Parallelitätskontrolle sichergestellt werden. Die pessimistische Genauigkeitskontrolle vermeidet gleichzeitige Konflikte durch Hinzufügen von Schlösser, während optimistische Parallelitätskontrolle Datenversionen überprüft, wenn sie aktualisiert werden, und für Szenarien mit weniger Konflikten geeignet. Die Auswahl der entsprechenden Kontrollstrategie für die Gleichzeitigkeit ist entscheidend für die Stabilität der Datenbank und die Effizienz der Anwendung.

In diesem Artikel wird vorgestellt, wie der Mechanismus für Parallelitätskontrolle und Verriegelung der Oracle -Datenbank in PHP implementiert werden kann, in der Hoffnung, für Entwickler hilfreich zu sein, wenn sie den gleichzeitigen Zugriff bearbeiten.