>  기사  >  백엔드 개발  >  Go SQLCMD는 Windows 기본 버전보다 느립니까?

Go SQLCMD는 Windows 기본 버전보다 느립니까?

PHPz
PHPz앞으로
2024-02-08 23:57:09453검색

Go SQLCMD 比 Windows 原生版本慢吗?

PHP 편집자 Xiaoxin님, 데이터베이스를 관리하고 운영하기 위해 SQLCMD 도구를 자주 사용하시나요? Windows 기본 버전과 Go SQLCMD의 성능 차이를 비교해 본 적이 있나요? 이런 질문이 있다면 오늘 이 주제에 대해 토론해 보겠습니다. 이 기사에서는 이 두 버전의 성능을 비교하고 Go SQLCMD가 기본 Windows 버전보다 느린지 여부에 대한 답을 제공합니다. 한 번 보자!

질문 내용

Windows 로컬sqlcmd 在本地 SQL Server 数据库上运行脚本。我有一组脚本文件,用于创建数据库、添加表和索引、填充域数据、添加存储过程等。运行脚本是通过每个文件执行一个 sqlcmd -i <file>.sql을 사용하여 완료했습니다. 이것은 잘 작동하고 충분히 빠릅니다. sqlcmd의 새로운 Go 구현으로 전환한 후 데이터베이스 구축 시간이 몇 배 느려졌습니다.

연결 문제인지, 연결 풀링인지, 아니면 다른 문제인지 확인하기 위해 sqlcmd获取计时类型的统计信息来确定是否是连接问题、连接池或其他问题。如果我将多个文件作为附加的 -i <file.sql>에서 타이밍 유형 통계를 얻을 수 있는 방법을 찾지 못했습니다. 여러 파일을 추가 -i <file.sql> 옵션으로 전달하면 이것이 Go 명령 시작 또는 초기 데이터베이스 연결 설정임을 나타내는 개선 사항을 확인할 수 있습니다. 문제. p>

저는 10개의 SQL 파일을 가져와서 10개의 개별 sqlcmd 执行来运行,也作为一个 sqlcmd 执行来运行,这十个文件作为单独的 -i 실행과 하나의

실행으로 실행하고 10개의 파일을 별도의 -i code> 입력 파일로 실행하는 테스트를 수행했습니다. 개별 명령에는 20초가 걸리고, 조합 명령에는 4초가 걸립니다. 따라서 이는 시작 오버헤드나 연결 오버헤드의 문제인 것 같습니다. <p> </p>@siggemannen의 제안에 따라 AD 자격 증명과 직접 데이터베이스 사용자를 사용하여 연결을 테스트했습니다. AD 자격 증명은 직접 데이터베이스 연결보다 훨씬 느립니다. 이는 이것이 제 시나리오에서 나타나는 속도 저하의 원인임을 의미합니다. <p> </p>문제를 해결하거나 추가 문제 해결을 위한 제안이나 아이디어를 찾고 있습니다. AD 인증 속도를 높일 수 있는 방법이 있나요? <h2 class="daan"></h2>Solution<p><code>sqlcmd 并不比原生版本慢。使用 Windows/AD 凭据建立连接会增加建立连接所需的启动时间,并且在用例中为每个 sqlcmdGo

은 기본 버전보다 느리지 않습니다. Windows/AD 자격 증명을 사용하여 연결을 설정하면 연결을 설정하는 데 필요한 시작 시간이 늘어나고 사용 사례의 각

인스턴스에 대해 하나의 SQL 파일을 실행하여 추가 오버헤드가 추가됩니다. sqlcmd 运行许多 SQL 文件,这将恢复我们所需的性能。但是,我们无需任何返工即可使用的替代方案是使用 SQL Server 级别主体 sa 在创建数据库时创建。这恢复了与使用 AD 登录的本机 sqlcmd

빌드 스크립트를 다시 작성하여 각 개인에 대해 많은 SQL 파일을 실행할 수 있으며 🎜 이를 통해 필요한 성능을 복원할 수 있습니다. 그러나 재작업 없이 사용할 수 있는 대안은 SQL Server 수준 보안 주체 sa는 데이터베이스가 생성될 때 생성됩니다. 이렇게 하면 AD 로그인을 사용하여 기본 🎜과 비슷한 성능이 복원됩니다. 🎜

위 내용은 Go SQLCMD는 Windows 기본 버전보다 느립니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제