8.2.6 其他优化技巧

本节列出了许多提高查询处理速度的技巧:

  • 如果您的应用程序发出多个数据库请求以执行相关更新,则将这些语句组合到存储的例程中可以帮助提高性能。同样,如果您的应用程序根据多个列值或大量数据计算单个结果,则将计算结果合并到 UDF(用户定义的函数)中可以提高性能。然后,产生的快速数据库操作可用于其他查询,应用程序,甚至可以用不同的编程语言编写的代码重用。有关更多信息,请参见第 23.2 节“使用存储的例程”第 28.4 节“向 MySQL 添加函数”

  • 要解决ARCHIVEtable 出现的任何压缩问题,请使用OPTIMIZE TABLE。参见第 15.5 节“ ARCHIVE 存储引擎”

  • 如果可能,将报告分类为“实时”或“统计”,其中仅根据从实时数据定期生成的汇总 table 中创建统计报告所需的数据。

  • 如果您的数据与行和列的 table 结构不一致,则可以将数据打包并存储到BLOB列中。在这种情况下,您必须在应用程序中提供代码以打包和解压缩信息,但这可能会节省 I/O 操作,以读写相关值集。

  • 对于 Web 服务器,将图像和其他二进制资产存储为文件,路径名存储在数据库中,而不是文件本身。大多数 Web 服务器比文件内容在缓存文件方面更胜一筹,因此使用文件通常更快。 (尽管在这种情况下,您必须自己处理备份和存储问题.)

  • 如果您确实需要很高的速度,请查看底层的 MySQL 接口。例如,通过直接访问 MySQL InnoDBMyISAM存储引擎,与使用 SQL 接口相比,您可以大大提高速度。

同样,对于使用NDBCLUSTER存储引擎的数据库,您可能希望研究 NDB API 的可能用法(请参阅MySQL NDB 群集 API 开发人员指南)。

  • 复制可以为某些操作提供性能优势。您可以在副本之间分配 Client 端检索,以分散负载。为避免在进行备份时减慢源速度,可以使用副本进行备份。参见第 16 章,复制