当前位置: 主页 > 数据库

如何对数据库进行优化-购够乐网上商城对其进行分析优化,

发布时间:2023-02-09 16:11   浏览次数:次   作者:佚名

目录

一、简介

首先我们来看一下,数据库优化可以从那些方面着手:

图片

如上图所示,数据库优化可以从四个维度入手:架构优化、硬件优化、DB优化、SQL优化。

从上到下,位置越高,优化越明显,对数据库的性能提升越高。 我们常说的SQL优化就是对性能提升最少的优化。

接下来,让我们看看每个优化是如何实现的。

2、结构优化

一般来说,优化架构层的效果在高并发场景下最为明显。 常见的优化方式有:分布式缓存、读写分离、分库分表等,每种优化方式都适用于不同的应用场景。

分布式缓存

有句老话说的好,性能不够,缓存可以弥补。 当我们需要在架构层进行优化时,我们会立即将缓存视为神器,在应用程序和数据库之间添加缓存服务,例如 Redis 或 Memcache。

如何对数据库进行优化_网站的导航条该怎么进行seo优化_购够乐网上商城对其进行分析优化,

图片

当收到查询请求时,我们首先查询缓存,判断缓存中是否有数据,然后直接将数据返回给应用程序。 如果没有数据,查询数据库,加载到缓存中,大大减少了访问数据库的次数。 自然地,数据库性能也得到了提升。

但是需要注意的是,引入分布式缓存后,系统需要考虑如何应对缓存穿透、缓存击穿、缓存雪崩等问题。

读写分离

一主多从、读写分离、主动同步是常见的数据库架构优化手段。

一般来说,当你的应用读多写少,数据库无法承受读的压力时,可以采用读写分离的方式,通过增加从库的数量来线性提升系统的读性能。

图片

主库提供数据库写入服务; 从库提供数据库读取功能; master和slave之间,通过binlog同步数据。

在准备实现读写分离时,为了保证高可用,需要实现故障的自动转移,而主从架构会存在潜在的主从不一致性。

网站的导航条该怎么进行seo优化_购够乐网上商城对其进行分析优化,_如何对数据库进行优化

水平分割

水平分片也是数据库架构优化的常用手段。

当您的应用业务数据量大,单库容量成为性能瓶颈时,水平分片可以降低单库容量,提高数据库写入性能。

图片

在准备实施水平分片时,需要根据实际业务选择合理的分片键(sharding-key)。

架构优化总结

读写分离主要用于解决“数据库读取性能问题”

水平切分主要用于解决“数据库数据量大的问题”

分布式缓存架构可能比读写分离更适合高并发、大数据量的场景。

购够乐网上商城对其进行分析优化,_如何对数据库进行优化_网站的导航条该怎么进行seo优化

3、硬件优化

我们在使用数据库的时候,无论是读操作还是写操作,最终都需要访问磁盘,所以磁盘的性能决定了数据库的性能。 PCIE固态硬盘的性能是普通机械硬盘的几十倍。 这里我们可以从吞吐量和IOPS两个维度来看一下机械硬盘、普通固态硬盘和PCIE固态硬盘之间的性能指标。

吞吐率:单位时间内读写的数据量

IOPS:每秒IO操作数

从以上数据我们可以直观的看出,不同规格的硬盘之间的性能差距是非常大的。 当然,性能更好的硬盘价格会更贵。 当资金充足,急需提高数据库性能时,尝试更换数据库硬盘。 这是一个很好的举措,你之前遇到的SQL执行慢的问题在你更换硬盘后可能就不是问题了。

4.数据库优化

有时 SQL 执行缓慢并不一定完全是 SQL 问题。 手动安装数据库,不做任何参数调整,无论SQL再怎么优化,都无法发挥其性能的最大化。 为了让数据库实例充分发挥其性能,首先要优化数据库的实例参数。

数据库实例参数优化遵循三个口头禅:日志不要小,缓存要足够大,连接要足够。

数据库事务提交后,事务对数据页的修改需要刷新(fsync)到磁盘,以保证数据的持久化。 这种磁盘刷新是一种低性能的随机写入。 如果每次事务提交都刷新磁盘,会极大地影响数据库的性能。 数据库架构设计中采用了以下两种优化方法:

如何对数据库进行优化_网站的导航条该怎么进行seo优化_购够乐网上商城对其进行分析优化,

所以日志和缓存对于数据库实例来说尤为重要。 如果连接不够如何对数据库进行优化,数据库会直接抛出异常,系统无法访问。

五、SQL优化

SQL优化很容易理解。 就是通过给查询字段加索引或者重写SQL来提高它的执行效率。 总的来说,SQL编写有以下通用技巧:

索引越少,查询就会越慢; 索引过多会占用大量空间,而且在执行增删改查语句时需要动态维护索引,影响性能。 选择率高(重复值少),被where频繁引用,需要建立B树索引; 一般情况下,join列需要建立索引; 复杂文档类型查询使用全文索引效率更高; 索引的建立要在查询和DML性能之间取得平衡; 创建复合索引时,注意基于非前导列查询的情况

UNION ALL的执行效率高于UNION如何对数据库进行优化,因为UNION在执行的时候需要去重;

执行SQL时,优化器需要将*转换成具体的列; 每次查询都要返回表,不能使用覆盖索引。

一般JOIN字段都是预先建立索引的

提高可读性; 避免慢查询的概率; 可以转化为多个短查询,由业务方处理

RAND() 导致数据列被多次扫描

如何对数据库进行优化_购够乐网上商城对其进行分析优化,_网站的导航条该怎么进行seo优化

实施计划

如果要优化SQL,必须要看执行计划。 执行计划会告诉你哪里效率低,哪里需要优化。你可以通过explain sql查看执行计划

SQL优化总结

下面总结一下SQL优化套路:

查看执行计划解释sql

如果有警告信息,查看警告信息show warnings;

查看SQL涉及的表结构和索引信息

根据执行计划,思考可能的优化点

根据可能的优化点进行表结构变更、索引添加、SQL重写等操作

查看优化后的执行时间和执行计划

如果优化效果不明显,重复第四步