数据库优化的最佳实践

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:
+关注继续查看

 在许多很好的例子,技术和方法被世界上最好的数据库性能专家所高荐。我们将讨论提高数据库性能的最常用的方法,而不是评论或建议任何特定的工具或技术。
  1)谨慎而有效地使用索引
  选择合理的索引(前缀性及可选性)、删除没有用的索引。
  2)使用规范化,但不要使用过头
  规范化(至少是第三范式)是一个易于理解且标准的方法。然而,在有些情况下,你可能希望违反这些规则。查询表通常是规范化的产物,也就是说,你创建了一个特殊的表,这个表包含了在其他表中被频繁使用的相关信息的列表。然而,当使用那些经常被访问且分布有限(仅有或有限的行数拥有小值)的查找表时,会使系统性能降低。在这种情况下,每次你使用查询信息,它们必须使用join以获取完整数据。join的开销很大,而且频繁访问会使开销随着时间逐渐增加。为了减少这种潜在的性能问题,可以使用枚举字段存储数据,而不是使用查找表存储数据。例如,可以使用枚举字段存储头发彩色值,而不是创建表来存储头发颜色值,这样还可以避免使用join.
  3)使用正确的存储引擎
  mysql的最强大的功能之一是它支持不同的存储引擎,存储引擎管理如何存储和恢复数据。mysql支持多个存储引擎,每个存储引擎具有独特的功能和用途,可以使数据库设计通过使用最合适他们的应用程序的存储引擎来改善数据库系统的性能。例如,如果有一个这样的环境:使用事务控制高度活跃的数据库,请选择一个合适这个情况的存储引擎(mysql的有些存储引擎不支持事务),你还可能会发现这样的视图和表,它们常常被查询但是几乎不被更新(例如查找表),在这种情况下,你可能希望使用存储引擎将这些数据存储在内存中,以便快速访问它们。
  InnoDB存储引擎支持事务,在需要事务支持时,通常应该选择这个存储引擎,它是Mysql中目前唯一事务性的引擎。很多第三方存储引擎支持事务,但是仅有InnoDB有"开包即用"选项。有趣的是,InnoDB中所有的索引都是B-trees,在这个B树中索引记录被存储在树的叶子项,InnoDB适用于高性能和事务处理环境。
  MyISAM存储引擎是Mysql默认引擎,如果你在create语句中省略了engine选项,那么默认使用这个引擎。MyISAM经常在数据仓库、电子商务和企业应用中使用。MyISAM使用高级缓存和索引机制提高数据检索速度,另外,当各种应用程序需要快速检索数据而不需要事务时,MyISAM将是很好的选择。
  Blackhole存储引擎是非常有趣的,它并不存储任何东西。实际上,正如它的名字所言-存储进去的数据永远还会返回。Blackhole存储引擎有个特殊的用途,如果启用了二进制日志,SQL命令将被写入这个日志,这时,Blackhole存储引擎被当做复制拓扑中的中继代理使用。
  Memory存储引擎(有时被称为HEAP)是内存中的存储器,它使用哈希机制频繁检索被使用过的数据,这样可以更快地检索,它访问数据的方式与其他存储引擎类似,但是数据存储在内存中,并且只在mysql会话有效。当关机时,这些数据被刷新并删除掉。Memory存储引擎通常用于以下情况:静态数据被频繁使用且很少被改变(如查找表).
  4)通过Query Cache使用视图来加速结果
  5)使用约束
  6)使用explain、analyze、optimize
  这些工具在诊断和调优时很重要,在不发生错误的前提下经常使用它们,但是请小心使用。具体来说,当analyze、optimize有意义且不是作为定期的预定的事件时使用它们。我们发现有些系统管理员晚上使用这些命令,但是一般情况下,这样做是不值得的,并且会产生不必要的表副本。显然,强制系统定期复制数据浪费时间,并会导致操作过程中的访问有限。

最新内容请见作者的GitHub页:http://qaseven.github.io/

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5月前
|
存储 监控 关系型数据库
MySQL数据库查询性能优化的技巧和经验分享
MySQL数据库查询性能优化的技巧和经验分享
|
7月前
|
SQL 机器学习/深度学习 缓存
企业运维训练营之数据库原理与实践—数据库DAS简介和备份上云方案—性能诊断与优化(上)
企业运维训练营之数据库原理与实践—数据库DAS简介和备份上云方案—性能诊断与优化(上)
110 0
|
7月前
|
SQL 运维 5G
企业运维训练营之数据库原理与实践—数据库DAS简介和备份上云方案—性能诊断与优化(下)
企业运维训练营之数据库原理与实践—数据库DAS简介和备份上云方案—性能诊断与优化(下)
|
缓存 运维 网络协议
PostgreSQL 性能优化和体系化运维(一)|学习笔记
快速学习 PostgreSQL 性能优化和体系化运维(一)
286 0
|
SQL 运维 监控
PostgreSQL 性能优化和体系化运维(二)|学习笔记
快速学习 PostgreSQL 性能优化和体系化运维(二)
132 0
PostgreSQL 性能优化和体系化运维(二)|学习笔记
|
SQL 存储 运维
【笔记】最佳实践—如何优化数据导入导出
数据库实际应用场景中经常需要进行数据导入导出,本文将介绍如何使用数据导入导出工具。
124 0
|
SQL 存储 运维
最佳实践—如何优化数据导入导出
数据库实际应用场景中经常需要进行数据导入导出,本文将介绍如何使用数据导入导出工具。
208 0
|
SQL 关系型数据库 MySQL
云数据库的性能优化措施|学习笔记
快速学习云数据库的性能优化措施
145 0
|
安全 Java 数据中心
微服务架构服务容错设计分析
在微服务体系架构中,由于拆解的服务数变多了,服务发生故障的地方也会相应的增加,因此如何保证服务架构健壮是一个值得深思的问题。微服务容错机制正是这样一种稳定性解决方案,可以理解微微服务架构的保险丝,通过它可以对业务平台形成一种有效的保护机制。在发生平台异常时候,容错机制是平台稳定运行的最后一道屏障。
微服务架构服务容错设计分析
|
存储 SQL 关系型数据库
【PostgreSQL 创新营】第七课:PostgreSQL性能优化和体系化运维 答疑汇总
【PostgreSQL 创新营】第七课:PostgreSQL性能优化和体系化运维 答疑汇总
425 0
【PostgreSQL 创新营】第七课:PostgreSQL性能优化和体系化运维 答疑汇总
推荐文章
更多