簡體   English   中英

Webservice 和 MySQL 的最佳優化技巧

[英]Best Optimisation Tips for Webservice and MySQL

我計划構建一個 iPhone 客戶端,該客戶端將使用基於 XML-RPC 構建的 Web 服務。 我需要構建一個最好的系統架構來滿足以下需求:

  1. 它應該是安全的
  2. 響應時間應該很快
  3. 表現

這就是我認為我的架構的方式:

  1. iPhone 客戶端將通過 HTTPS 調用 web 服務(牢記安全),我計划綁定一個唯一的 API KEY 提供的方法來調用任何方法。 相同的密鑰將在服務器端進行驗證。
  2. Web 服務將依次調用 MYSQL 存儲過程
  3. 我的大部分業務邏輯將在 STORED 過程中使用 go 以提高性能,因為它將被編譯代碼
  4. XML RPC Web 服務將以 XML 格式返回響應給 iPhone。

所以我的基本查詢:

  1. 從安全的角度來看,HTTPS 和 API 密鑰是否足夠,可以做些什么來使其更安全?

  2. 對於性能和優化——存儲程序是否足夠或者我們推薦 go 和 MYSQL mem-cahce——我的系統實際上需要根據地理位置、所有最近的酒店和餐館提取記錄——所以每個用戶的距離總是不同的它不會是同一個查詢——mem-cache 有幫助嗎?

  3. 哪些額外的東西可以幫助提高安全性、優化和性能。
  4. 我還打算索引數據庫字段。
  5. 我錯過了 - 該系統建立在 PHP + MySql

所有建議將不勝感激,即使是小事也請寫下您的想法!

謝謝

為了優化 MYSQL,您可以查看 dev.mysql.com 的優化概述 參考部分也有更詳細的建議

Mysql 查詢的提示。

  • 您應該知道 mysql 中的索引是什么以及如何使用正確的列設置索引
  • 嘗試使用索引列編寫連接查詢。 這將給出快速的結果
  • 避免在查詢中使用rand() function。
  • 避免在查詢中使用LIKE [第一次搜索替代查詢方法]
  • 如果您使用DISTINCE ,請嘗試在查詢中使用LIMIT
  • 不要在查詢中使用不必要的()
  • group byhaving子句很重
  • 就地OR盡可能嘗試使用UNION

重要的

  • 如果您知道結果是單行,請始終使用 LIMIT 1。 因為在表中,您有(示例)1000000 記錄您的 output 軌道,其中第一條記錄為 10000。 如果限制為 1 索引停止,則執行控制將不會搜索 output 的 rest 記錄,結果將很快。

  • 在查詢中使用 in-bult mysql function 但不要在帶有索引列的 where 子句中使用 in-bult function。

暫無
暫無

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

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