Heim > Artikel > Backend-Entwicklung > Ist Go SQLCMD langsamer als die native Windows-Version?
PHP-Editor Xiaoxin, verwenden Sie häufig SQLCMD-Tools zum Verwalten und Betreiben von Datenbanken? Haben Sie schon einmal den Leistungsunterschied zwischen der nativen Windows-Version und Go SQLCMD verglichen? Wenn Sie diese Fragen haben, dann lassen Sie uns dieses Thema heute besprechen. In diesem Artikel vergleichen wir die Leistung dieser beiden Versionen und geben die Antwort, ob Go SQLCMD langsamer ist als die native Windows-Version. Lass uns einen Blick darauf werfen!
Ich habe Windows Local sqlcmd
在本地 SQL Server 数据库上运行脚本。我有一组脚本文件,用于创建数据库、添加表和索引、填充域数据、添加存储过程等。运行脚本是通过每个文件执行一个 sqlcmd -i <file>.sql
verwendet, um es auszufüllen. Das funktioniert gut und ist schnell genug.
Nach dem Wechsel zur neuen Go-Implementierung von sqlcmd
sind die Datenbankerstellungszeiten um ein Vielfaches langsamer.
Ich konnte keine Möglichkeit finden, Statistiken zum Timing-Typ von sqlcmd
获取计时类型的统计信息来确定是否是连接问题、连接池或其他问题。如果我将多个文件作为附加的 -i <file.sql>
abzurufen, um festzustellen, ob es sich um ein Verbindungsproblem, Verbindungspooling oder etwas anderes handelt. Ich kann eine scheinbare Verbesserung sehen, wenn ich mehrere Dateien als zusätzliche -i <file.sql>
-Optionen übergebe, was mir anzeigt, dass es sich um den Start des Go-Befehls oder den ersten Aufbau einer Datenbankverbindung handelt Probleme. p>
Ich habe einen Test durchgeführt, bei dem ich zehn SQL-Dateien nahm und sie als zehn separate sqlcmd
执行来运行,也作为一个 sqlcmd
执行来运行,这十个文件作为单独的 -i
Ausführungen und auch als eine
-i code>-Eingabedatei ausführte. Einzelne Befehle dauern 20 Sekunden, kombinierte Befehle dauern 4 Sekunden. Dies scheint also ein Problem mit dem Start- oder Verbindungs-Overhead zu sein. <p>
</p>Auf Vorschlag von @siggemannen habe ich die Verbindung mit AD-Anmeldeinformationen und einem direkten Datenbankbenutzer getestet. AD-Anmeldeinformationen sind viel langsamer als direkte Datenbankverbindungen, was bedeutet, dass dies die Ursache für die Langsamkeit ist, die ich in meinem Szenario sehe. <p>
</p>Ich bin auf der Suche nach Vorschlägen oder Ideen zur Lösung des Problems oder zur weiteren Fehlerbehebung. Gibt es eine Möglichkeit, die AD-Authentifizierung zu beschleunigen? <h2 class="daan"></h2>Solution<p><code>sqlcmd
并不比原生版本慢。使用 Windows/AD 凭据建立连接会增加建立连接所需的启动时间,并且在用例中为每个 sqlcmd
Go ist nicht langsamer als die native Version. Die Verwendung von Windows/AD-Anmeldeinformationen zum Herstellen einer Verbindung erhöht die zum Herstellen der Verbindung erforderliche Startzeit und verursacht zusätzlichen Overhead, indem für jede -Instanz im Anwendungsfall eine SQL-Datei ausgeführt wird. sqlcmd
运行许多 SQL 文件,这将恢复我们所需的性能。但是,我们无需任何返工即可使用的替代方案是使用 SQL Server 级别主体 sa
在创建数据库时创建。这恢复了与使用 AD 登录的本机 sqlcmd
sa
wird beim Erstellen der Datenbank erstellt. Dadurch wird eine mit der nativen 🎜 mit AD-Anmeldung vergleichbare Leistung wiederhergestellt. 🎜Das obige ist der detaillierte Inhalt vonIst Go SQLCMD langsamer als die native Windows-Version?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!