」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > (SQL 查詢)Express.js 中的快取與索引

(SQL 查詢)Express.js 中的快取與索引

發佈於2024-11-08
瀏覽:147

(SQL Query) Caching vs Indexing in Express.js

開發者您好,這是我在這個平台上的第一篇文章! ?

我想分享我在 Express.js 和 SQL 方面的令人驚訝的體驗。我是一名初學者開發人員,在為我的專案開發 API 時,我每天處理超過 20 萬個 API 請求。最初,我使用 Express.js API 設定了一個 SQLite 資料庫(約 400 MB),並使用 Node.js 快取來加快速度。

起初,查詢的回應時間約為 200-300 毫秒,因為它涉及多個 JOIN 和搜尋。因此,我決定進行一些實驗,看看是否可以提高效能。

這就是我所做的:

  • 我刪除了節點快取。
  • 我在 5 個表的 20 列上建立了索引(我的資料庫在 5 個表中總共有 103 個欄位)。

結果令人驚訝!建立索引後,我的一些更複雜的查詢(涉及多個 JOIN)只需 3-5 毫秒即可執行。

以前,使用節點快取:

  • 第一個請求過去大約需要 300-400 毫秒。
  • 後續請求將需要 2-5 毫秒(由於快取)。

之後,僅使用 SQLite 索引:
每個請求只需要7-10毫秒沒有任何快取。

現在查詢始終很快,這也減少了伺服器負載!最初,我在具有 4 GB RAM 和 4 個 vCPU 的 DigitalOcean Droplet 上運行我的應用程式。但優化 SQL 查詢後,我只需 2 GB RAM 和 2 個 vCPU 就可以輕鬆處理相同的工作負載。

我知道這聽起來很簡單,但是正確的 SQL 索引對查詢效能產生了很大的影響,我甚至不再需要依賴快取。 ?

版本聲明 本文轉載於:https://dev.to/w3vish/sql-query-caching-vs-indexing-in-expressjs-40n6?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3