簡體   English   中英

Amazon RDS MySQL 實例執行速度非常慢

[英]Amazon RDS MySQL instance performs very slow

我已經在 Amazon EC2(新加坡地區)上發布了我的網站,並且我已經使用 MySQL RDS 實例進行數據存儲。 除了性能之外,一切都很好。

我似乎,我所有的查詢,尤其是 select 語句,執行得非常緩慢。 如果我在本地 PC 上檢查此問題,則它運行良好。 但是當我嘗試從 RDS 實例獲取數據時,速度非常慢。 一些 select 語句需要 2-3 秒來獲取數據。

我已經正確調整了所有表索引,並根據需要進行了規范化/反規范化。 我已經對 RDS 自定義參數組(例如max_connection緩沖區等)進行了所有必要的設置。 我不知道我是否遺漏了什么,但它對我不起作用 - 性能沒有提高。

那么,有人可以幫我解決這個問題嗎?

值得注意的是,無論出於何種原因,RDS 中默認情況下 MySQL 查詢緩存是關閉的。 本周我們自己也艱難地了解到了這一點。

這對您的初始查詢的性能沒有幫助,但總體上可能會加快速度。

要重新啟用查詢緩存:

  1. 登錄RDS控制台
  2. 單擊您的 RDS 實例以查看其詳細信息
  3. 編輯數據庫參數組
  4. 確保同時設置query_cache_sizequery_cache_type

(免責聲明:我不是 DBA,所以我在這里可能還缺少其他東西)

重要的是讓您的 RDS 和 EC2 實例不僅在同一個區域中,而且在同一個可用區中,以最大限度地減少延遲。

我在愛爾蘭的 EC2 上托管了一個 API,並將數據庫移到了美國弗吉尼亞州的 MySQL 集群,我們為另一個項目設置了該集群,每個 SQL 查詢的往返都使 API 無法使用。

對我來說,這與 MySQL 無關,而是與我在t2.medium上的實例類型有關。 問題是我用完了 CPU 積分,因為數據庫上的負載太高,余額一直在下降,直到最后,我每小時獲得的積分遠遠少於需要的積分。

這是我在 RDS CloudWatch 的 CPU Credit Usage 下看到的:

在此處輸入圖片說明

如果您遇到同樣的問題,可能是時候切換到不同的實例了。 以下是實例類型列表:

https://aws.amazon.com/rds/instance-types/

希望這可以幫助。

假設系統具有更高的讀取率,可以通過以下方式提高 RDS MySQL 性能:

  1. 使用更大的實例類型,它們具有更好的 NW 帶寬。 示例 AWS Quadruple EXL 具有 1,000 Mbps 帶寬。
  2. 使用 PIOPS 存儲您可以從 MySQL DB 中提取 16KB 的 12,500 IOPS
  3. 如果執行大量讀取,請添加一個或多個只讀副本以提高讀取性能
  4. 應用標准實踐,例如:調整查詢、應用索引等

首先,我強烈建議使用以下方法查看這些查詢

顯示完整的進程列表

您可以在SHOW FULL PROCESSLIST上閱讀更多相關信息

這將顯示每個查詢所需的時間。

然后你可以使用

解釋

您可以在EXPLAIN上閱讀更多相關信息

這將顯示您是否需要對查詢進行一些改進

您可以通過使用分析來檢查查詢在哪里花費時間。 使用以下查詢:

  1. 設置分析=1
  2. 執行您的選擇查詢
  3. 顯示個人資料

這將告訴您查詢的狀態以及查詢花費的時間。 如果分析返回的所有時間總和小於查詢的實際執行時間,那么可能是網絡帶寬等其他因素造成的。

始終應在同一 AWS 可用區中部署源和 rds 以降低網絡延遲,並應在 VPC 中為 RDS 創建私有端點鏈接以通過內部網絡而不是通過 Internet 路由連接 RDS 端點。

參考: https : //docs.aws.amazon.com/AmazonRDS/latest/UserGuide/vpc-interface-endpoints.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM