Go SQLCMD 比 Windows 原生版本慢嗎?

PHPz
發布: 2024-02-08 23:57:09
轉載
365 人瀏覽過

Go SQLCMD 比 Windows 原生版本慢吗?

php小編小新,你是否常用SQLCMD工具來管理和操作資料庫?你是否曾經比較過Windows原生版本和Go SQLCMD的效能差異?如果你有這些疑問,那麼今天我們就來探討這個主題。在本文中,我們將比較這兩個版本的效能,並給出答案,Go SQLCMD是否比Windows原生版本慢。讓我們一起來看看吧!

問題內容

我一直在使用 Windows 本機sqlcmd在本機 SQL Server 資料庫上執行腳本。我有一組腳本文件,用於建立資料庫、新增表格和索引、填充網域資料、新增預存程序等。運行腳本是透過每個檔案執行一個sqlcmd -i .sql來完成的。這運作良好且足夠快。 切換到sqlcmd的新 Go 實作後,資料庫建置時間慢了幾倍。

我一直無法找到任何方法從sqlcmd獲取計時類型的統計資料來確定是否是連接問題、連接池或其他問題。如果我將多個文件作為附加的-i 選項傳遞,我可以看到看起來有什麼改進,這向我表明這是Go 命令啟動或初始資料庫連接建立的問題。 p>

我做了一個測試,我拿了十個SQL 文件,並將它們作為十個單獨的sqlcmd執行來運行,也作為一個sqlcmd執行來運行,這十個檔案作為單獨的-i輸入檔。單獨的命令需要 20 秒,綜合命令需要 4 秒。因此,這似乎是啟動開銷或連線開銷的問題。

根據 @siggemannen 的建議,我使用 AD 憑證和直接資料庫使用者測試了連線。 AD 憑證比直接資料庫連線慢得多,這意味著這是我在場景中看到的緩慢的根源。

我正在尋找任何建議或想法來解決問題或進一步排除故障。有什麼辦法可以加快 AD 身份驗證的速度嗎?

解決方法

Gosqlcmd並不比原生版本慢。使用 Windows/AD 憑證建立連線會增加建立連線所需的啟動時間,並且在用例中為每個sqlcmd執行個體執行一個 SQL 文件,這會增加額外的開銷。

我們可以重新編寫建置腳本,以便為每個單獨的sqlcmd運行許多 SQL 文件,這將恢復我們所需的效能。但是,我們無需任何返工即可使用的替代方案是使用SQL Server 級別主體sa在建立資料庫時建立。這恢復了與使用 AD 登入的本機sqlcmd相當的效能。

以上是Go SQLCMD 比 Windows 原生版本慢嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!