本节列出了一些提高查询处理速度的杂项技巧:
如果您的应用程序发出多个数据库请求来执行相关更新,将这些语句组合到一个存储的例程中可以帮助提高性能。同样,如果您的应用程序根据多个列值或大量数据计算单个结果,将计算组合到一个可加载函数中可以提高性能。由此产生的快速数据库操作可供其他查询、应用程序甚至用不同编程语言编写的代码重用。有关详细信息,请参阅 第 25.2 节,“使用存储例程”和 向 MySQL 添加函数。
要修复表出现的任何压缩问题
ARCHIVE
,请使用OPTIMIZE TABLE
. 参见 第 16.5 节,“ARCHIVE 存储引擎”。如果可能,将报告分类为“实时”或 “统计”,其中统计报告所需的数据仅根据实时数据定期生成的汇总表创建。
如果您的数据不符合行列表结构,您可以将数据打包并存储到
BLOB
列中。在这种情况下,您必须在应用程序中提供代码来打包和解包信息,但这可能会节省 I/O 操作来读取和写入相关值集。使用 Web 服务器,将图像和其他二进制资产存储为文件,路径名存储在数据库中而不是文件本身。与数据库内容相比,大多数 Web 服务器更擅长缓存文件,因此使用文件通常更快。(尽管在这种情况下您必须自己处理备份和存储问题。)
如果您真的需要高速,请查看低级 MySQL 接口。例如,通过直接访问 MySQL
InnoDB
或MyISAM
存储引擎,与使用 SQL 接口相比,您可以获得显着的速度提升。同样,对于使用
NDBCLUSTER
存储引擎的数据库,您可能希望研究 NDB API 的可能使用(请参阅 MySQL NDB Cluster API 开发人员指南)。复制可以为某些操作提供性能优势。您可以在副本之间分配客户端检索以分散负载。为避免在进行备份时降低源的速度,您可以使用副本进行备份。请参阅第 17 章,复制。