数据库性能优化

为什么数据库会慢?

  • 任何存储系统决定于其查询性能的主要有三种:查找的时间复杂度、数据总量、高负载
  • 决定于查找时间复杂度主要有两个因素:查找算法、存储数据结构
  • 无论是哪种存储,数据量越多,资源的消耗(CPU、磁盘读写繁忙)、耗时也会越来越高
  • 高负载造成原因有高并发请求、复杂查询等,导致CPU、磁盘繁忙等

优化

  • 数据库优化方案的核心本质有三种:减少数据量、用空间换性能、选择合适的存储系统。

分库分表

  • 分库分表是实在没有办法的办法,应放到最后选择。
  • 优先选择 NoSQL 代替,因为 NoSQL 诞生基本上为了扩展性与高性能。
  • 究竟分库还是分表?量大则分表,并发高则分库。
  • 分库分表拆分的方式主要分两种:垂直拆分、水平拆分。
  • 进行拆分后,路由方式一般有三种:区间范围、Hash、分片映射表。

datetime、bigint、timestamp用哪个来表示时间了?

  • 如果需要对时间字段进行操作(如通过时间范围查找或者排序等),推荐使用bigint,
  • 如果时间字段不需要进行任何操作,推荐使用timestamp,使用4个字节保存比较节省空间,但是只能记录到2038年记录的时间有限。
  • 在InnoDB存储引擎下,通过时间范围查找,性能bigint > datetime > timestamp
  • 在InnoDB存储引擎下,通过时间分组,性能timestamp > datetime,但是相差不大
  • 在InnoDB存储引擎下,通过时间排序,性能bigint > timestamp > datetime

参考地址

几款mysql性能调优工具 MySQLTuner tuning-primer.sh pt-qurey-digest

版权

本作品采用 CC BY-NC-ND 4.0 授权,转载必须注明作者和本文链接。

下一篇:操作系统总结