현재 위치: > 최신 기사 목록> 효율적인 배치 데이터 삽입 작업을 달성하기 위해 Array_Chunk를 사용하는 방법은 무엇입니까?

효율적인 배치 데이터 삽입 작업을 달성하기 위해 Array_Chunk를 사용하는 방법은 무엇입니까?

M66 2025-04-26

데이터베이스 작업을 수행 할 때 데이터의 배치 삽입은 특히 많은 양의 데이터를 처리 할 때 데이터를 하나씩 삽입하는 것보다 성능이 향상됩니다. PHP는이 작업을 최적화 할 수있는 여러 가지 방법을 제공하며 Array_chunk는 대형 배열을 더 작은 배열로 자르면서 효율적인 배치 삽입 작업을 가능하게하는 매우 실용적인 도구입니다.

1. Array_chunk 란 무엇입니까?

Array_Chunk 는 큰 배열을 여러 개의 작은 배열로 분할하는 데 사용되는 PHP의 배열 기능입니다. 각 작은 배열의 요소 수는 귀하가 지정할 수 있습니다. 기본 구문은 다음과 같습니다.

 array_chunk(array $array, int $size, bool $preserve_keys = false): array
  • $ 배열 : 절단 해야하는 배열.

  • $ 크기 : 각 작은 배열의 크기.

  • $ preserve_keys : 원래 배열의 키 이름을 유지할지 여부는 기본값이 false 입니다.

2. Array_Chunk를 사용하여 배치 삽입을 구현하십시오

데이터베이스에 데이터 배치를 삽입해야한다고 가정하십시오. 하나씩 삽입하는 것은 비효율적 일뿐 만 아니라 성능 병목 현상을 쉽게 만듭니다. Array_Chunk를 사용하여 데이터를 여러 개의 작은 배치로 자른 다음 각 작은 배치를 한 번에 삽입 할 수 있습니다.

다음은 Array_Chunk를 사용하여 배치 삽입을 구현하는 예입니다.

 <?php
// 데이터 소스를 시뮬레이션합니다
$data = [
    ['name' => 'Alice', 'email' => 'alice@m66.net'],
    ['name' => 'Bob', 'email' => 'bob@m66.net'],
    ['name' => 'Charlie', 'email' => 'charlie@m66.net'],
    // ...더 많은 데이터
];

// 각 배치의 크기를 설정하십시오
$batchSize = 100;

// 사용 array_chunk 데이터를 작은 배치로 나눕니다
$dataChunks = array_chunk($data, $batchSize);

// 데이터베이스에 연결하십시오
$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');

// 거래를 시작하십시오
$pdo->beginTransaction();

foreach ($dataChunks as $chunk) {
    // 배치 인서트를 빌드하십시오 SQL 성명
    $placeholders = [];
    $values = [];
    
    foreach ($chunk as $row) {
        $placeholders[] = "(?, ?)";
        $values[] = $row['name'];
        $values[] = $row['email'];
    }

    // 준비하다 SQL 성명
    $sql = "INSERT INTO users (name, email) VALUES " . implode(", ", $placeholders);
    $stmt = $pdo->prepare($sql);

    // 배치 삽입을 수행하십시오
    $stmt->execute($values);
}

// 거래를 제출하십시오
$pdo->commit();

echo "데이터 삽입이 완료되었습니다!";
?>

3. 코드 파싱

  1. 데이터 출처 : 사용자 이름 및 이메일 주소가 포함 된 데이터 세트를 시뮬레이션하고 이메일 도메인을 M66.net 으로 대체했습니다.

  2. 배치 처리 : Array_Chunk를 사용하여 데이터를 지정된 크기 (예 : 100)로 분할하여 한 번에 100 개의 데이터를 삽입 할 수 있도록하여 많은 수의 단일 삽입으로 인한 성능 문제를 피합니다.

  3. 트랜잭션 처리 : 데이터 일관성 및 성능을 보장하기 위해 데이터베이스 트랜잭션을 활성화합니다. 이러한 방식으로 삽입 프로세스 중에 고장이 발생하면 데이터의 무결성을 유지하기 위해 모든 작업을 롤백 할 수 있습니다.

  4. 배치 삽입 SQL : SQL 문을 동적으로 구축하여 배치 삽입을 수행합니다. 이 예에서는 각 배치에 대한 명령문에 삽입물을 생성하여 데이터를 하나씩 SQL 문의 자리 표시 자에게 바인딩합니다.

4. 최적화 제안

  • 배치 크기를 합리적으로 설정합니다 . Array_Chunk 의 배치 크기는 성능에 영향을 미치는 중요한 요소입니다. 배치가 너무 작 으면 데이터베이스가 매번 삽입되므로 성능 저하가 발생합니다. 배치가 너무 커지면 메모리가 너무 많거나 데이터베이스 연결이 타임 아웃을 유발할 수 있습니다. 따라서 실제 상황에 따라 적절한 배치 크기를 조정해야하며 일반적인 배치 크기는 100 또는 1000입니다.

  • 트랜잭션 사용 : 위에서 언급 한 바와 같이 트랜잭션을 켜면 데이터베이스가 여러 삽입 작업을 하나의 작업으로 결합 할 수 있기 때문에 배치 인서트를 수행 할 때 데이터 일관성을 향상시키고 성능을 향상시킵니다.

  • 오류 처리 : 실제 프로젝트에서는 삽입이 실패 할 때 롤백 작업과 같은 오류 처리 메커니즘을 고려해야합니다.

5. 요약

Array_Chunk를 사용하면 많은 양의 데이터를 작은 배치로자를 수있어 효율적인 배치 데이터 삽입 작업이 가능합니다. 이것은 성능을 향상시킬뿐만 아니라 과도한 메모리 소비를 피합니다. 동시에 트랜잭션 처리와 협력하면 데이터 일관성과 무결성이 보장 될 수 있습니다. 이것은 데이터를 규모로 처리 할 때 매우 효율적인 솔루션입니다.