在数据库级别进行优化
使数据库应用程序快速运行的最重要因素是其基本设计:
表格结构合理吗?特别是,列是否具有正确的数据类型,并且每个表是否具有适合工作类型的列?例如,执行频繁更新的应用程序通常具有许多具有少量列的表,而分析大量数据的应用程序通常具有很少列的表。
是否有适当的 索引来提高查询效率?
您是否为每个表使用适当的存储引擎,并利用您使用的每个存储引擎的优势和功能?特别是,事务性存储引擎(例如
InnoDB
非 事务性存储引擎)的选择MyISAM
对于性能和可伸缩性来说非常重要。注意InnoDB
是新表的默认存储引擎。实际上,高级InnoDB
性能特征意味着InnoDB
表通常优于更简单的MyISAM
表,尤其是对于繁忙的数据库。每个表是否使用适当的行格式?此选择还取决于用于表的存储引擎。特别是,压缩表使用较少的磁盘空间,因此需要较少的磁盘I / O来读取和写入数据。压缩适用于具有
InnoDB
表的所有类型的工作负载 以及只读MyISAM
表。应用程序是否使用适当的 锁定策略?例如,通过允许共享访问,以便数据库操作可以并发运行,并在适当时请求独占访问,以便关键操作成为首要任务。同样,存储引擎的选择也很重要。该
InnoDB
存储引擎处理大部分锁定的问题,而不需要您的参与,允许在数据库更好的并发,减少试验和调整的金额,让您的代码。是否正确使用了用于缓存的所有内存区域?也就是说,足够大以容纳频繁访问的数据,但不能太大以至于它们会超载物理内存并导致分页。要配置的主要内存区域是
InnoDB
缓冲池,MyISAM
密钥缓存和MySQL查询缓存。