MYSQL性能优化以及建议

1、业务代码组合逻辑后进行数据库操作,如根据波次进行库存分配,可以将波次里面的订单所有明细进行分组,然后匹配库存。
2、将大字段、不常用字段放置到扩展表中,将经常使用(状态、数量、编号)放到一张表中,预防经常查询所有字段带来很多网络流量开销。
3、尽量使用主键进行加锁,防止间隙锁带来锁冲突。
4、热点数据更新放到事务最后,并制定更新顺序(如库存扣减、可以通过按照主键ID、货品ID排序更新)。
5、减少大事务,可以将大事务拆分多个小的独立事务(根据业务情况确定是否可以拆分),可以从两个维度(1、节点状态变更:如分配后自动生成拣货任务,就可以拆分两个事务,通过消息队列异步处理另一个状态。2、批量数据单个执行,如选择多个波次执行一个操作,后台可以逐个波次执行)。
6、合理调节数据库最大连接数、innodb buffer大小。
7、合理使用服务器内存缓存,配合消息队列清理缓存,来减少MYSQL的配置数据访问。
8、表之间转移/归档数据,少用insert into select where语句,防止select的where未走索引,加上其他事务更新表产生死锁。
9、业务报表数据尽量通过job定时跑数据生成(业务时间加上索引,job跑最近的业务数据、或则结合RowVersion增量统计),避免直接使用复杂的SQL语句查询业务表数据。
10、对于业务系统存在定时归档/关单的表,需要做好表重建工作,减少碎片以及存储空间。
11、对于非常大的表,尽量不要查询总条数,可以通过上一页,下一页的交互方式,后台通过小技巧取一个总条数返回给前端,如当前页的记录数等于每页需要展示的最大条数,则直接将总页数+1否在,总页数就是当前的页。
12、对于只需要根据一个条件做等值查询时,可以考虑通过分表减少每张表的数据量,如出库单日志表。
13、设计主从表(一对多)时,从表的外键不要设置为可空,可能导致join走不了索引。
14、网上提到的不要使用IN操作,走不了索引的说法是错误的,具体走不走索引需要根据执行计划分析(当in后面的数据在数据表中超过一定值就不会走)。
15、条件允许(如使用了可靠性很高的云服务器,不会意外断电等)的情况下将双一配置改为双100配置,提升数据库写入性能。

Original: https://www.cnblogs.com/wangchaozhi/p/15306511.html
Author: Mr.LUCKY
Title: MYSQL性能优化以及建议

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/508132/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • MYSQL(进阶篇)——一篇文章带你深入掌握MYSQL

    MYSQL(进阶篇)——一篇文章带你深入掌握MYSQL 我们在上篇文章中已经学习了MYSQL的基本语法和概念 在这篇文章中我们将讲解底层结构和一些新的语法帮助你更好的运用MYSQL…

    数据库 2023年6月14日
    0100
  • Vue3提高效率小技巧

    问题1:Vue3使用了setup API,无法访问到this,虽然提供了getCurrentInstance API,但访问全局变量时感觉比Vue2使用方式更繁琐了,因此想了个捷径…

    数据库 2023年6月11日
    096
  • jenkins-配置python

    1. 进入”Dashboard”界面,点击左侧”构建执行状态” 2. 点击列表设置图标 3. 勾选”Environmen…

    数据库 2023年6月14日
    070
  • 【java框架】SpringBoot(11) — SpringBoot利用监听事件,实现异步操作

    请出主角:Spring当中的事件机制 没错,本节主要讲的是Spring中事件机制:ApplicationEventPublisher,实现监听ApplicationEvent,最后…

    数据库 2023年6月6日
    0141
  • 高并发组件了解

    消息队列 A服务和多个服务耦合,内部维护对多个服务发送数据的接口,那么这些接口如果有的挂了,有的不需要了,那么还得修改A内部的代码,如果使用MQ,A发送消息就好,不必考虑那么多事情…

    数据库 2023年6月16日
    069
  • Centos7安装Docker

    一、docker运行流程 举个例子你想使用MySQL镜像,那么执行docker pull 下载镜像的时候 首先它会在本地仓库进行运行,如果本地仓库有你想要的MySQL镜像 那么它会…

    数据库 2023年6月14日
    0121
  • 多线程基础知识!!!

    1.1、继承Thread类(重点) public class MyThread extends Thread{ @Override public void run() { } pu…

    数据库 2023年6月16日
    090
  • 数据库发展史2–数据仓库

    ​ 回顾数据仓库的发展历程,大致可以将其分为几个阶段:萌芽探索到全企业集成时代、企业数据集成时代、混乱时代–“数据仓库之父”间的论战、理论模型确…

    数据库 2023年6月11日
    0111
  • 索引的树结构

    二分查找 二叉树 二叉平衡树 B-TREE :二叉平衡树的基础上,使加载一次节点,可以加载更多路径数据,同时把查询范围缩减到更小 缺点:业务数据的大小可能远远超过了索引数据的大小,…

    数据库 2023年6月16日
    0144
  • 记一次有意思的业务实现 → 单向关注是关注,双向关注则成好友

    开心一刻 有一个问题一直困扰着我:许仙选择了救蛇,但为什么杨果选择了救鹰(而不是救蛇)。 [En] A question has been bothering me: Xu Xia…

    数据库 2023年5月24日
    0115
  • Mongodb使用总结

    Mongodb使用总结 基于内存操作,便于与网站交互 数据库-集合-文档(存储多种数据类型),我们的操作都是基于单文档进行操作,并且通过冗余字段进行操作 嵌入式数组文档减少了对昂贵…

    数据库 2023年6月11日
    087
  • Could not initialize class org.apache.maven.plugin.war.util.WebappStructureSerializer

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    数据库 2023年6月6日
    091
  • QQ登录简介

    QQ登录简介 (1) QQ登录 QQ登录,亦即我们所说的第三方登录,是指用户可以不在本项目中输入密码,而直接通过第三方的验证,成功登录本项目。 若想实现QQ登录,需要成为QQ互联的…

    数据库 2023年6月14日
    073
  • 多商户商城系统功能拆解21讲-平台端分销订单

    多商户商城系统,也称为B2B2C(BBC)平台电商模式多商家商城系统。可以快速帮助企业搭建类似拼多多/京东/天猫/淘宝的综合商城。 多商户商城系统支持商家入驻加盟,同时满足平台自营…

    数据库 2023年6月14日
    0112
  • 操作系统(学习笔记)

    操作系统(学习笔记) PCB=process control block=进程控制块,用于存储进程相关信息,以便进程切换; GDT=global descriptor table=…

    数据库 2023年6月14日
    083
  • Activiti7 多实例子流程

    顾名思义,子流程是一个包含其他活动、网关、事件等的活动,这些活动本身形成了一个流程,该流程是更大流程的一部分。 使用子流程确实有一些限制: 一个子流程只能有一个none类型的启动事…

    数据库 2023年6月14日
    0162
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球