MYSQL 四、mysql进阶 10(数据库其它调优策略)

 一、数据库调优的措施

        1.1 调优的目标
  • 尽可能节省系统资源 ,以便系统可以提供更大负荷的服务。(吞吐量更大)
  • 合理的结构设计和参数调整,以提高用户操作响应的速度 。(响应速度更快)
  • 减少系统的瓶颈,提高MySQL数据库整体的性能。

        1.2 如何定位调优问题

        随着用户量的不断增加,以及应用程序复杂度的提升,我们很难用 ‘更快’ 去定义数据库调优的目标,因为用户在不同时间段访问服务器的瓶颈不同。比如双十一促销的时候会带来大规模的并发访问,还有用户在进行不用业务操作的时候,数据库的 事务处理 和 sql查询 都会有所不同。因此我们还需要更加精细的定位,去确定调优的目标。

        如何确定呢?一般情况下,有如下几种方式:

        1、用户的反馈(主要)
       
用户是我们的服务对象,因此他们的反馈是最直接的,虽然他们不会直接提出技术建议,但是有些问题往往是用户第一时间发现的,我们要重视用户的反馈,找到和数据相关的问题。

        2、日志分析(主要)
        我们可以通过查看数据库日志和操作系统日志等方式找出异常情况,通过他们来定位遇到的问题。         

        3、服务器资源使用监控
        通过监控服务器的 CPU、内存、IO等使用情况,可以实时了解服务器的性能使用,与历史情况进行对比。

        4、数据库内部状况监控
        在数据库的监控中,活动会话监控是一个重要的指标。通过它,你可以清楚的了解数据库当前是否处于非常忙碌的状态,是否存在sql堆积等。

        5、其它
       
除了活动会话监控以外,我们也可以对 事务、锁等待等进行监控,这些都可以帮助我们对数据库的运行状态有更全面的认识。
        
        1.3 调优的维度和步骤

        我们需要调优的对象是整个数据库管理系统,它不仅包括 SQL 查询,还包括数据库的部署配置、架构 等。从这个角度来说,我们思考的维度就不仅仅局限在 SQL 优化上了。通过如下的步骤我们进行梳理:

        第1步:选择适合的 DBMS

        第2步:优化表设计

        第3步:优化逻辑查询

        第4步:优化物理查询

        物理查询优化是在确定了逻辑查询优化之后,采用物理优化技术(比如索引等),通过计算代价模型对 各种可能的访问路径进行估算,从而找到执行方式中代价最小的作为执行计划。在这个部分中,我们需要掌握的重点是对索引的创建和使用。

        第5步:使用 Redis 或 Memcached 作为缓存

        除了可以对 SQL 本身进行优化以外,我们还可以请外援提升查询的效率。

        因为数据都是存放到数据库中,我们需要从数据库层中取出数据放到内存中进行业务逻辑的操作,当用 户量增大的时候,如果频繁地进行数据查询,会消耗数据库的很多资源。如果我们将常用的数据直接放 到内存中,就会大幅提升查询的效率。

        键值存储数据库可以帮我们解决这个问题。

        常用的键值存储数据库有 Redis 和 Memcached,它们都可以将数据存放到内存中。

        

        第6步:库级优化

image-20220707202732911

二、优化Mysql服务器

image-20220707203818987

        2.1 优化服务器硬件

        服务器的硬件性能直接决定着MySQL数据库的性能。硬件的性能瓶颈直接决定MySQL数据库的运行速度 和效率。针对性能瓶颈提高硬件配置,可以提高MySQL数据库查询、更新的速度。

(1) 配置较大的内存 。足够大的显存是提高MySQL数据库性能的方法之一。内存的速度比磁盘I/O快得多,可以通过增加系统的缓冲区容量使数据在内存中停留的时间更长,以减少磁盘I/O

(2) 配置高速磁盘系统 ,以减少读盘的等待时间,提高响应速度。磁盘的I/O能力,也就是它的寻道能力,目前的SCSI高速旋转的是7200转/分钟,这样的速度,一旦访问的用户量上去,磁盘的压力就会过大,如果是每天的网站pv (page view) 在150w,这样的一般的配置就无法满足这样的需求了。现在SSD盛行,在SSD上随机访问和顺序访问性能差不多,使用SSD可以减少随机IO带来的性能损耗。

(3) 合理分布磁盘I/O,把磁盘I/O分散在多个设备,以减少资源竞争,提高冰箱操作能力。

(4) 配置多处理器, MySQL是多线程的数据库,多处理器可同时执行多个线程。

        2.2 优化MySQL的参数

image-20220707204403406

  • innodb_buffer_pool_size :这个参数是Mysql数据库最重要的参数之一,表示InnoDB类型的 表 和索引的最大缓存 。它不仅仅缓存 索引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值