栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MySQL-数据库优化策略概述

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MySQL-数据库优化策略概述

目录

一、优化目标

 二、定位问题

三、调优的维度和步骤


一、优化目标

        1.尽可能节省系统资源 ,以便系统可以提供更大负荷的服务。(吞吐量更大)         

        2.合理的结构设计和参数调整,以提高用户操作响应速度 。(响应速度更快)

        3.减少系统的瓶颈,提高MySQL数据库整体的性能。

 二、定位问题

        1.用户的反馈(主要)

        2.日志分析(主要)

        3.服务器资源使用监控

        4.数据库内部状况监控

        5.对事务 、 锁等待的监控

三、调优的维度和步骤

第1步:选择适合的 DBMS

第2步:优化表设计

第3步:优化逻辑查询

第4步:优化物理查询

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

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

        除了可以对 SQL 本身进行优化以外,我们还可以请外援提升查询的效率。 因为数据都是存放到数据库中,我们需要从数据库层中取出数据放到内存中进行业务逻辑的操作,当用 户量增大的时候,如果频繁地进行数据查询,会消耗数据库的很多资源。如果我们将常用的数据直接放到内存中,就会大幅提升查询的效率。 键值存储数据库可以帮我们解决这个问题。 常用的键值存储数据库有 Redis 和 Memcached,它们都可以将数据存放到内存中。

第6步:库级优化

        1、读写分离

                经典的数据库拆分方案,主库负责写,从库负责读。

        2、垂直拆分

                当数据量级达到 千万级 以上时,有时候我们需要把一个数据库切成多份,放到不同的数据库服务器上, 减少对单一数据库服务器的访问压力。 

                数据表过多,可以将相关联的表放在一个数据库上;

                数据列过多,把表拆分为若干个,经常一起使用的列放在一起。    

-垂直拆分的优点: 可以使得列数据变小,在查询时减少读取的Block数,减少I/O次数。此外,垂直分区 可以简化表结构,易于维护。

-垂直拆分的缺点: 主键会出现冗余,需要管理冗余列,并会引起 JOIN 操作。此外,垂直拆分会让事务变得更加复杂。 

        3、水平拆分

                水平分表主要解决单一表数据量过大的问题。可以按照某个属性维度把大表拆分成若干小表。每张小表有相同结构。比如按照年份切分。

         4.拆分表:冷热数据分离

        例如 会员members表 存储会员登录认证信息,该表中有很多字段,如id、姓名、密码、地址、电话、个人描述字段。其中地址、电话、个人描述等字段并不常用,可以将这些不常用的字段分解出另一个表。

        通过这种分解可以提高表的查询效率。对于字段很多且有些字段使用不频繁的表,可以通过这种分解的 方式来优化数据库的性能。

        5.建立中间表

        对于经常JOIN的若干表,可以建立一个中间表。这样就不用每次都进行联合查询,可以提高数据库的查询速度。

        6. 增加冗余字段

        7.优化数据类型

        8.使用非空约束

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1006029.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号