本节列出了许多改进查询处理速度的杂项技巧:
-
如果您的应用程序执行多个数据库请求以执行相关的更新操作,将语句组合成存储过程可以提高性能。同样,如果您的应用程序基于多个列值或大量数据计算单个结果,将计算组合成可加载的函数也可以提高性能。然后,快速数据库操作将可供其他查询、应用程序和不同编程语言的代码重用。请参阅 第 27.2 节,“使用存储过程” 和 将函数添加到 MySQL 以获取更多信息。
-
要修复
ARCHIVE
表中的压缩问题,请使用OPTIMIZE TABLE
。请参阅 第 18.5 节,“ARCHIVE 存储引擎”。 -
如果可能,将报告分类为 “实时” 或 “统计”,其中统计报告所需的数据仅来自周期性生成的摘要表中的实时数据。
-
如果您有不适合行和列表结构的数据,可以将数据打包并存储在
BLOB
列中。在这种情况下,您必须在应用程序中提供代码来打包和解包信息,但这可能会节省读取和写入相关值集的 I/O 操作。 -
对于 Web 服务器,存储图像和其他二进制资产作为文件,以数据库中存储路径名,而不是文件本身。大多数 Web 服务器比数据库内容更善于缓存文件,因此使用文件通常更快。(虽然您必须自己处理备份和存储问题。)
-
如果您需要非常高的速度,请查看 MySQL 的低级接口。例如,通过直接访问 MySQL
InnoDB
或MyISAM
存储引擎,可以比使用 SQL 接口获得实质性的速度提升。同样,对于使用
NDBCLUSTER
存储引擎的数据库,您可能希望调查使用 NDB API 的可能性(请参阅 MySQL NDB Cluster API 开发者指南)。 -
复制可以为某些操作提供性能优势。您可以将客户端检索分布在副本中,以分配负载。要避免在备份时减慢源服务器,可以使用副本进行备份。请参阅 第 19 章 复制。