효율적인 성능을 위한 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!