[SQL] 삽입의 성능을 최대 SQL 속도?
SQL삽입의 성능을 최대 SQL 속도?
나는 SQL 서버에 대한 몇 가지 테스트를 수행하고 있는데이 가능한 최고의 삽입 속도를 싶어. 명령문 I 사용은이 같은 것입니다 :
INSERT INTO db_Test_databse..tbl_test with(rowlock)
( joinid, date_key,
col1, col2,col3,col4, col5, col6, col7, col8, col9, col10, ...
)
SELECT tabid as joinid,
date_key,
rec_type,
col2,
dbo.udf_convert_hex_to_dec(col3),
col4, col5, col6, col7, col8,
dbo.udf_convert_hex_to_dec(col9),
dbo.udf_convert_hex_to_dec(col10),
...
from source_table f
25 열이 있습니다; 대부분의 유형은 BIGINT 또는 INT의이다.
나는 신원 필드 기본 키를 제외하고 대상 테이블의 모든 인덱스를 떨어졌다.
더 성능을 개선하는 방법에 대한 모든 팁?
추신. 이 양식에서 나는 16.000 행 / 초 평균 속도를 가지고있다.
해결법
-
==============================
1.당신이해야 최상의 성능을 얻으려면 :
당신이해야 최상의 성능을 얻으려면 :
병렬에서 레코드를 삽입하는 여러 클라이언트가 있습니까? 그렇다면 당신은 또한 잠금 영향을 고려해야합니다.
SQL 서버는 SQL Server 관리 Studio 또는 데이터베이스 엔진 튜닝 관리자를 통해 쿼리를 실행하여 중 특정 쿼리에 대한 인덱스를 제안 할 수 있습니다. 당신은 SQL Server가 INSERT 속도를 높이기 위해 사용 된 인덱스를 제거하지 않았는지 확인하기 위해이 작업을 수행해야합니다.
이 여전히 충분히 빨리하지 않으면 당신은 대신 사용하여 대량 삽입 삽입까지 그룹화 고려 (또는 내부적으로 bcp 유틸리티 또는 SqlBulkCopy의, 모두의 사용 벌크 INSERT 같은)해야한다. 행을 삽입 할 때이 가장 높은 처리량을 제공 할 것입니다.
또한 최적화 대량 가져 오기 성능을 참조 - 그 기사에서 조언을 많이도 "정상"삽입에 적용됩니다.
-
==============================
2.당신은 SqlBulkCopy의를 사용하여 생각 해 봤나? 당신은 DataTable을 구축하고 WriteToServer 루틴에 전달해야합니다.
당신은 SqlBulkCopy의를 사용하여 생각 해 봤나? 당신은 DataTable을 구축하고 WriteToServer 루틴에 전달해야합니다.
그것은 FAST입니다!
-
==============================
3.당신은 종료하기 전에 저장 프로 시저에서 사용할 수있는
당신은 종료하기 전에 저장 프로 시저에서 사용할 수있는
OPTION(RECOMPILE)
from https://stackoverflow.com/questions/7090243/sql-speed-up-performance-of-insert by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL 서버에 연결하기 위해 PHP를 사용하는 방법 (0) | 2020.05.14 |
---|---|
[SQL] 포스트 그레스 컬럼에 데이터를 반환하지 않는 테이블을 반환하는 기능 (0) | 2020.05.14 |
[SQL] 드라이버 (SSL) 암호화 보안 소켓 레이어를 사용하여 SQL 서버에 대한 보안 연결을 설정할 수 없음 (0) | 2020.05.14 |
[SQL] 어떻게 오라클에 Timestamp_to_scn 및 Scn_to_timestamp를 사용 하는가? (0) | 2020.05.14 |
[SQL] 어떻게 SQL Server의 ID 열이 업데이트? (0) | 2020.05.14 |