MySQL-하나의 INSERT 문에 몇 개의 행을 삽입 할 수 있습니까?
값 세트의 수에 따라 달라 집니까? INSERT 문의 바이트 수에 따라 달라 집니까?
INSERT ... SELECT
다른 테이블에 해당 레코드 또는 일부가있는 경우 패턴을 사용하여 무한히 많은 수의 레코드를 삽입 할 수 있습니다 .
그러나 INSERT ... VALUES
패턴을 사용하여 값을 하드 코딩하는 경우 명령문의 크기 / 길이에 제한 이 있습니다. max_allowed_packet 클라이언트가 데이터베이스 서버로 보내는 SQL 문의 길이를 제한하고 모든 유형의 쿼리에 영향을줍니다. INSERT 문뿐만 아니라
이상적으로 Mysql은 단일 삽입 (한 번에)으로 무한한 수의 행 생성을 허용하지만
MySQL 클라이언트 또는 mysqld 서버가 max_allowed_packet 바이트보다 큰 패킷을 수신하면 Packet too large 오류가 발생하고 연결이 닫힙니다.
max_allowed_packet 변수의 기본값을 보려면 MySQL에서 다음 명령을 실행하십시오.
show variables like 'max_allowed_packet';
표준 MySQL 설치의 기본값은 1048576 바이트 (1MB)입니다. 세션 또는 연결에 대해 더 높은 값으로 설정하여이 값을 늘릴 수 있습니다.
이것은 모든 사람에 대해 값을 500MB로 설정합니다 (GLOBAL이 의미하는 바입니다).
SET GLOBAL max_allowed_packet=524288000;
새 연결로 새 터미널에서 변경 사항을 확인하십시오.
show variables like 'max_allowed_packet';
이제 무한 레코드 삽입에 대해 오류없이 작동합니다. 감사
쿼리는 max_allowed_packet
일반적으로 제한됩니다 .
를 참조 http://forums.mysql.com/read.php?20,161869 , 그것은 당신의 MySQL의 구성과 관련이 : max_allowed_packet
, bulk_insert_buffer_size
, key_buffer_size
.
하나의 INSERT 문으로 무한한 수의 행을 삽입 할 수 있습니다. 예를 들어 INSERT 쿼리를 실행할 때마다 루프가 천 번 실행되는 저장 프로 시저를 실행할 수 있습니다.
또는 INSERT는 자체적으로 INSERT를 수행하는 트리거를 트립 할 수 있습니다. 다른 트리거를 트립합니다. 등등.
아니요, 값 집합의 수에 의존하지 않습니다. 또한 바이트 수에도 의존하지 않습니다.
괄호의 중첩 깊이에는 제한이 있고 전체 문의 길이에는 제한이 있습니다. 이 두 가지 모두 아이러니하게도 thedailywtf.com에서 참조됩니다. 그러나 위에서 언급 한 두 가지 방법 모두 이러한 한계를 극복합니다.
max_allowed_packet 제한에 도달하고
오류 : 1390 준비된 문에 자리 표시자가 너무 많습니다.
하나의 SQL에 65535 개의 자리 표시자를 넣을 수 있으므로 한 행에 두 개의 열이있는 경우 하나의 SQL에 32767 개의 행을 삽입 할 수 있습니다.
MySQL에서 5 만 개 이상의 레코드를 가져 오면 일반 오류가 발생합니다. 1390 준비된 문에 자리 표시자가 너무 많습니다.
INSERT 당 삽입으로 제한되는 정의 된 수의 행이 없다고 생각하지만 일반적으로 쿼리에 대해 일종의 최대 크기가있을 수 있습니다.
max_allowed_packet에 의해 제한됩니다.
다음을 사용하여 지정할 수 있습니다 mysqld --max_allowed_packet=32M
. 기본값은 16M입니다.
/ etc / mysql /의 my.cnf에서 지정할 수도 있습니다.
'IT박스' 카테고리의 다른 글
null이 매개 변수를 캐스팅하는 이유는 무엇입니까? (0) | 2020.10.05 |
---|---|
Visual Studio 2005에서 Google C ++ 테스트 프레임 워크 (gtest)를 설정하는 방법 (0) | 2020.10.05 |
긴 ASP.NET 작업에 대한 IIS 요청 시간 초과 (0) | 2020.10.05 |
C와 C ++에서 사용되는 exec의 다른 버전은 무엇입니까? (0) | 2020.10.05 |
사전의 값으로 키 가져 오기 (0) | 2020.10.04 |