Web服务和MySQL的最佳优化技巧

时间:2011-06-04 11:16:53

标签: php iphone mysql web-services

我计划构建一个使用基于XML-RPC构建的Web服务的iPhone客户端。我需要构建一个最佳的系统架构来满足以下需求:

  1. 应该是安全的
  2. 响应时间应该快速而快速
  3. 性能
  4. 这就是我认为我的架构如何:

    1. iPhone客户端将通过HTTPS调用Web服务(在MIND中保持安全性),我计划绑定一个UNIQUE API KEY,它将被传递以调用XML-RPC提供的任何方法。相同的密钥将在服务器端验证。
    2. Web服务将依次调用MYSQL存储过程
    3. 我的大部分业务逻辑都将采用STORED程序来提高性能,因为它将是编译代码
    4. XML RPC Web Service会以XML格式将响应返回给iPhone。
    5. 所以我的基本查询:

      1. 从安全角度来看,HTTPS和API密钥是否足够,还可以做些什么来使其更安全?

      2. 对于性能和优化 - 存储过程是否足够,或者我们建议使用MYSQL mem-cahce - 我的系统实际上需要根据地理位置,所有最近的酒店和餐馆提取记录 - 所以距离会对于每个用户总是不同的,它不会真的是相同的查询 - mem-cache帮助吗?

      3. 还有哪些其他因素可以帮助改善安全性,优化和性能。
      4. 我还打算索引数据库字段。
      5. 我没想提 - 系统基于PHP + MySql
      6. 所有建议都将不胜感激,请写下您的想法,即使它很小 要做的事情!

        由于

2 个答案:

答案 0 :(得分:1)

为了优化MYSQL,您可以查看dev.mysql.com上的 optimization overview 。参考部分中还有 more-detailed suggestions

答案 1 :(得分:0)

Mysql查询提示。

  • 你应该知道mysql中的索引是什么以及如何使用适当的列
  • 设置索引
  • 尝试使用索引列编写连接查询。这将给出快速结果
  • 避免在查询中使用rand()函数。
  • 避免在查询中使用LIKE [第一次搜索替代查询方法]
  • 如果您使用DISTINCE尝试在查询中使用LIMIT
  • 请勿在查询中使用不必要的()
  • group byhaving条款很重
  • 地理位置OR
  • 尝试使用UNION

重要

  • 如果您知道结果是单行,请始终使用LIMIT 1。因为在表中你有(例子)1000000用10000首记录记录你的输出轨道。如果limit是1索引停止,则执行控制将不会搜索输出的rest记录,结果将很快。

  • 在查询中使用in-bult mysql函数但不要在带有索引列的where子句中使用in-bult函数。