>  기사  >  데이터 베이스  >  더 빠른 성능을 위해 MySQL 데이터베이스 행 삽입을 어떻게 최적화할 수 있습니까?

더 빠른 성능을 위해 MySQL 데이터베이스 행 삽입을 어떻게 최적화할 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-26 10:30:10458검색

How Can I Optimize MySQL Database Row Insertion for Faster Performance?

효율적인 성능을 위한 MySQL 데이터베이스 행 삽입 최적화

대량의 행을 MySQL 데이터베이스에 효율적으로 삽입하는 과제는 잘 알려져 있습니다. 개별 삽입을 사용하여 제공된 코드 조각은 익숙할 수 있지만 성능 병목 현상이 나타납니다. 그러나 삽입 속도를 획기적으로 향상시킬 수 있는 대체 접근 방식이 있습니다.

다중 행 삽입

각 행마다 별도의 삽입을 수행하는 것보다 다음을 수행하는 것이 더 효율적입니다. 여러 행을 단일 삽입 문으로 그룹화합니다. 이 기술은 다음 수정된 코드에서 구현됩니다.

public static void BulkToMySQL()
{
    string ConnectionString = "server=192.168.1xxx";
    StringBuilder sCommand = new StringBuilder("INSERT INTO User (FirstName, LastName) VALUES ");           
    using (MySqlConnection mConnection = new MySqlConnection(ConnectionString))
    {
        List<string> Rows = new List<string>();
        for (int i = 0; i < 100000; i++)
        {
            Rows.Add(string.Format("('{0}','{1}')", MySqlHelper.EscapeString("test"), MySqlHelper.EscapeString("test")));
        }
        sCommand.Append(string.Join(",", Rows));
        sCommand.Append(";");
        mConnection.Open();
        using (MySqlCommand myCmd = new MySqlCommand(sCommand.ToString(), mConnection))
        {
            myCmd.CommandType = CommandType.Text;
            myCmd.ExecuteNonQuery();
        }
    }
}

향상된 성능

이 접근 방식을 사용하면 삽입 시간이 크게 단축됩니다. 원본 코드에서는 10만 행을 삽입하는 데 40초가 걸렸지만, 수정된 코드에서는 단 3초 만에 작업을 완료하여 90% 이상 향상되었습니다!

설명

이러한 효율성 향상의 핵심은 데이터베이스 왕복을 최소화하는 데 있습니다. 여러 행을 단일 명령문으로 그룹화함으로써 여러 데이터베이스 연결을 설정하고 닫는 데 관련된 오버헤드를 줄입니다. 그러면 데이터베이스는 전체 삽입 그룹을 단일 작업으로 처리할 수 있으므로 각 행에 대해 별도의 실행이 필요하지 않습니다.

보안 고려 사항

항상 다음이 중요합니다. SQL 문을 작성할 때 코드 삽입을 방지합니다. 제공된 코드에서 MySqlHelper.EscapeString을 사용하면 잠재적으로 악의적인 입력이 안전하게 이스케이프되어 SQL 주입 취약점을 방지할 수 있습니다.

위 내용은 더 빠른 성능을 위해 MySQL 데이터베이스 행 삽입을 어떻게 최적화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.