배치 데이터를 삽입, 업데이트 또는 삭제할 때 데이터베이스 트랜잭션을 사용하면 데이터 작업의 원자력이 보장 될 수 있습니다. PDOSTATEMENT :: ROWCOUNT 메소드와 결합하여 작업에 의해 영향을받는 행의 수를 효과적으로 얻을 수 있으므로 배치 데이터 작업의 효율이 향상됩니다. 이 기사는 PDOSTATEMENT :: ROWCOUNT 및 TRANSACTION 메커니즘을 사용하여 효율적인 배치 데이터 작업을 달성하는 방법을 살펴 봅니다.
트랜잭션 메커니즘은 관계형 데이터베이스의 공통 기술로 일련의 데이터베이스 작업이 성공적이거나 모두 실패 할 수 있도록합니다. 일반적인 거래 운영에는 다음이 포함됩니다.
거래 시작 : 거래의 시작을 표시합니다.
거래 제출 : 거래의 모든 운영을 인정하십시오.
롤백 트랜잭션 : 오류가 발생하면 트랜잭션의 모든 작업을 취소하십시오.
PHP에서 데이터베이스 상호 작용에 PDO (PHP Data Objects)를 사용할 때는 tarktransaction () , Commit () 및 Rollback ()을 통해 트랜잭션을 제어 할 수 있습니다.
pdostatement :: RowCount 메서드는 마지막 SQL 문이 실행 된 후 영향을받는 행 수를 반환합니다. 일반적으로 다음 작업에 사용됩니다.
데이터 삽입 : 삽입 작업의 영향을받는 행 수를 반환합니다.
데이터 업데이트 : 업데이트 작업의 영향을받는 행 수를 반환합니다.
데이터 삭제 : 삭제 작업의 영향을받는 행 수를 반환합니다.
배치 작업에서는 RowCount 메소드를 사용하여 각 작업이 올바르게 실행되도록하거나 성공적으로 작동 한 행 수를 계산하는 데 사용할 수 있습니다.
배치 데이터를 삽입, 업데이트 또는 삭제할 때 데이터베이스의 무결성과 성능을 보장하는 것이 바람직합니다. 트랜잭션 메커니즘은 배치 작업의 원자력을 보장 할 수 있으며 RowCount는 각 작업이 성공했는지 여부를 결정하는 데 도움이 될 수 있습니다.
다음은 트랜잭션 메커니즘 및 RowCount 메소드를 사용하여 배치 데이터 삽입 작업을 수행하는 방법을 보여주는 샘플 코드입니다.
<?php
try {
// 1. 만들다 PDO 인스턴스 및 오류 모드를 설정합니다
$pdo = new PDO('mysql:host=localhost;dbname=testdb', 'username', 'password');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// 2. 거래를 시작하십시오
$pdo->beginTransaction();
// 3. 준비하다 SQL 성명
$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");
// 4. 배치 데이터를 시뮬레이션합니다
$users = [
['name' => 'Alice', 'email' => '[email protected]'],
['name' => 'Bob', 'email' => '[email protected]'],
['name' => 'Charlie', 'email' => '[email protected]'],
];
// 5. 삽입 작업을 수행하고 확인하십시오 rowCount
foreach ($users as $user) {
$stmt->bindParam(':name', $user['name']);
$stmt->bindParam(':email', $user['email']);
$stmt->execute();
// 6. 삽입 된 행의 수를 출력하십시오
echo "삽입 " . $stmt->rowCount() . " 좋아요\n";
}
// 7. 거래를 제출하십시오
$pdo->commit();
echo "모든 데이터 삽입이 성공적으로 삽입됩니다。\n";
} catch (Exception $e) {
// 8. 트랜잭션을 롤백하십시오
$pdo->rollBack();
echo "작동 실패: " . $e->getMessage();
}
?>
PDO 인스턴스를 작성하고 오류 모드를 설정하십시오 . 새 PDO ()를 사용하여 데이터베이스 연결 인스턴스를 생성하고 오류 모드를 예외 처리 모드로 설정하십시오.
트랜잭션 시작 : begintransaction ()을 사용하여 트랜잭션을 시작하여 후속 데이터베이스 작업이 실행되었는지 확인하십시오.
sql station : repary ()를 사용하여 SQL 문을 준비 하고 사용자에 삽입 (이름, 이메일)을 사용하여 사용자 데이터를 삽입합니다.
배치 데이터 삽입 : 루프에서 각 사용자의 데이터를 SQL 문에 바인딩하고 execute () 를 통해 삽입 작업을 수행하십시오.
영향을받는 행 수를 확인하십시오 . RowCount ()는 영향을받는 행 수를 반환합니다. 데이터를 삽입 할 때 일반적으로 각 Execute () 호출은 한 행에 영향을 미칩니다.
커밋 거래 : 모든 작업이 성공한 경우 Commit ()을 통해 거래를 커밋하고 모든 변경 사항을 영구적으로 저장하십시오.
예외 처리 및 롤백 : 실행 중에 예외가 발생하면 Rollback ()을 사용하여 트랜잭션을 사용하여 데이터베이스의 무결성을 보장하십시오.
트랜잭션을 사용하면 배치 작업의 효율성이 향상 될 수 있지만 많은 작업을 수행 할 때 성능을 향상시킬 수있는 몇 가지 최적화 팁이 있습니다.
배치 커밋 : 매우 큰 데이터 세트를 처리 할 때, 운영은 커밋을 위해 여러 개의 작은 배치로 분할 될 수 있으며 각 배치 프로세스 후에는 특정 수의 작업을 수행 한 후 트랜잭션이 제출됩니다. 이는 데이터베이스 연결에 대한 부담을 줄이고 성능을 향상시킵니다.
트랜잭션 로그 비활성화 : 경우에 따라 트랜잭션 로그를 비활성화하거나 데이터베이스를보다 효율적인 배치 모드로 임시로 설정하면 성능을 향상시킬 수 있습니다.
중복 작업 방지 : 배치 작업 전에 불필요한 반복 삽입, 업데이트 또는 삭제를 피하기 위해 데이터가 이미 존재하는지 확인할 수 있습니다.
PDOSTATEMENT :: ROWCOUNT를 트랜잭션 메커니즘과 결합하면 PHP에서 배치 데이터 작업을 효율적으로 수행 할 수 있습니다. 트랜잭션은 운영의 원자력과 일관성을 보장하고 RowCount는 운영 결과에 대한 피드백을 제공하여 각 작업이 성공했는지 여부를 결정하는 데 도움이됩니다. 이러한 도구를 합리적으로 사용하면 데이터베이스 작업의 효율성과 신뢰성을 크게 향상시킬 수 있습니다.