性能问题因素图

性能问题

1,需求问题及处理

问题:需求要求 innodb表(非myIsm)的千万级数据量的实时更新汇总,sql语句是:

select count(*) form 表

优化方案1:

创建统计表,每增加数据时统计表执行+1操作。弊端:数据库IO开销增加

优化方案2:

每日定时更新统计表的数据汇总。弊端:非实时更新数据汇总

优化方案3:

使用redis记录增加数据时统计字段执行+1操作,每日定时写入数据库

2,硬件问题

CPU1核、运行内存1G 压测并发能抗100

CPU8核、运行内存16G 压测并发能抗5000

3,数据库设计

a,冷热数据分离

b,text(64kb)、mediumtext(16MB)和longtext(4GB)字段切分使用varchar存储

c,innodb索引的添加和使用,优化sql语句where条件,使用explain语句进行索引命中率优化

4,架构设计

a,技术选项,如laravel可以使用swoole加速

b,数据库尽量不存储超文本数据和二进制多媒体文件(音频、视频、图片等)

c,使用缓存(客户端资源请求缓存(图片、js、css)、服务请求缓存(nginx)、服务逻辑缓存(php)、数据库请求缓存)

Linux性能查询命令以及管道

1,ps命令(查询进程)

进程CPU占用率倒叙前十进程:

ps -aux --sort=-%cpu|head -n11

进程运行内存占用率倒叙前十进程:

ps -aux --sort=-%mem|head -n11

进程运行内存占用倒叙前十进程:

ps -aux --sort=-rss|head -n11

查找MySQL的进程

ps -ef|grep mysqld

ps -ef|grep 3306

stat状态说明:
D      //无法中断的休眠状态(通常 IO 的进程); 
R      //正在运行可中在队列中可过行的; 
S      //处于休眠状态; 
T      //停止或被追踪; 
W      //进入内存交换 (从内核2.6开始无效); 
X      //死掉的进程 (基本很少见); 
Z      //僵尸进程; 
<      //优先级高的进程 
N      //优先级较低的进程 
L      //有些页被锁进内存; 
s      //进程的领导者(在它之下有子进程); 
l      //多线程,克隆线程(使用 CLONE_THREAD, 类似 NPTL pthreads); 
+      //位于后台的进程组;

2,top命令

说明参考:linux top命令详解(看这一篇就够了)_Steven.1的博客-CSDN博客_linux top命令详解

MySQL分页优化

问题:千万级的数据量表分页查询怎么优化?原本的语句:

select count(*) FROM 表 limit 9999999,10

方法1:通过主键子查询和主键搜索优化

select count(*) from 表 where id >= (select id FROM 表 limit 9999999,1) limit 10;

方法2:先查分页的id,再用in的查询

select count(*) from 表 where id in (select id FROM 表 limit 9999999,10);

如果报版本不支持的错误:This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

则改为

select * FROM 表 where id in (SELECT t.* FROM (select id FROM 表 limit 1) t);

方法3:增加查询字段的索引(针对单表优化)

索引类型:

btree索引(适合范围查询,【二叉树算法】,会降低数据写入速度,比hash索引还要慢一些)

hash索引(适合类别查询,【哈希算法】)

fulltext索引(适合长文本查询,【文本按字数拆分】,一般用es分布式搜索引擎代替)

R-tree索引

方法4:垂直(单表一百万的数据量)和水平分表(冷热数据拆分)

MySQL-IO的执行过程

MySQL性能问题以及查找和处理相关推荐

  1. 8核32g mysql性能_MySQL性能优化之参数配置

    1.目的: 通过根据服务器目前状况,修改Mysql的系统参数,达到合理利用服务器现有资源,最大合理的提高MySQL性能. 2.服务器参数: 32G内存.4个CPU,每个CPU 8核. 3.MySQL目 ...

  2. Mysql性能优化二

    接上一篇Mysql性能优化一 建立适当的索引 说起提高数据库性能,索引是最物美价廉的东西了.不用加内存,不用改程序,不用调sql,只要执行个正确的'create index',查询速度就可能提高百倍千 ...

  3. MySQL 性能监控4大指标——第一部分

    [编者按]本文作者为 John Matson,主要介绍 mysql 性能监控应该关注的4大指标. 第一部分将详细介绍前两个指标: 查询吞吐量与查询执行性能.文章系国内 ITOM 管理平台 OneAPM ...

  4. MySQL性能优化之参数配置

    1.目的: 通过根据服务器目前状况,修改MySQL的系统参数,达到合理利用服务器现有资源,最大合理的提高MySQL性能. 2.服务器参数: 32G内存.4个CPU,每个CPU 8核. 3.MySQL目 ...

  5. MySQL 性能优化技巧

    原文地址:MySQL 性能优化技巧 博客地址:www.extlight.com 一.背景 最近公司项目添加新功能,上线后发现有些功能的列表查询时间很久.原因是新功能用到旧功能的接口,而这些旧接口的 S ...

  6. mysql查看隔离模式_InnoDB 隔离模式对 MySQL 性能的影响

    过去的几个月我写了两篇文章,一篇是InnoDB 事务历史相关的危险债务,另一篇是关于MVCC 可能导致MySQL严重的性能问题的真相.在这篇文章里我将讨论一个相关的主题 – InnoDB 事务隔离模式 ...

  7. MySQL性能突发事件问题排查技巧

    导读:数据库是导致应用系统运行缓慢的常见原因.面对数据库引性能问题,很多开发者或者DBA却束手无策.本文作者经过多年的实际经验,整理了一些材料,将Linux环境下MySQL性能突发事件问题排查技巧分享 ...

  8. MySQL 性能调优专题一(索引数据结构详解)

    索引的本质 索引是帮助MySQL 高效获取数据的排好序的数据结构. MySQL 默认使用的是B+Tree数据结构. 磁盘的读取原理 在介绍结构之前,先简单说下磁盘的读取原理: 操作系统读写磁盘的基本单 ...

  9. MySQL性能调优与架构设计——第4章 MySQL安全管理

    第4章 MySQL安全管理 前言 对于任何一个企业来说,其数据库系统中所保存数据的安全性无疑是非常重要的,尤其是公司的有些商业数据,可能数据就是公司的根本,失去了数据的安全性,可能就是失去了公司的一切 ...

最新文章

  1. mysql增加字段默认位置_MySQL语句增加字段,修改字段名,修改类型,修改默认值
  2. Linux 小知识翻译 - 「RAID」
  3. python用sqlite数据库,python 中使用sqlite数据库
  4. 【Mybatis】MyBatis 实现多表查询
  5. java linkedlist 用法_Java LinkedList addLast()用法及代码示例
  6. 3. 机器学习中为什么需要梯度下降?梯度下降算法缺点?_一起学习西瓜书2
  7. Open3d之表面重建
  8. Response.Write() Alert后页面布局改变
  9. 机器学习中的数学基础
  10. Allegro 17.4 PCB设计流程与经验
  11. 概念讲解:大地水准面 | 地球椭球体 | 参考椭球体 | 大地基准面 | 地图投影
  12. 改变世界的15个网站
  13. delphi实现FTP上传与下载
  14. linux系统双显卡切换显卡驱动,Linux 下双显卡切换
  15. 计算机找不到ac97前面板怎么办,计算机Win7系统前面板上的耳机插孔没有声音。解决方法(音频设置+前面板插入方法)...
  16. git push出现 remote: Support for password authentication was removed on August 13, 2021.
  17. 如何在低代码开发平台上,实施表单设计流程
  18. 有没有可以跨平台的待办事项清单软件推荐?
  19. 《信创数据库选型专项测试用例》分享
  20. 告诉你游戏服务器到底是什么

热门文章

  1. 计算机应用程序没声音,电脑没声音怎么办
  2. OpenCV在图片上画线和矩形
  3. 计算机cpu对什么访问最快,CPU直接访问的存储器是什么?
  4. 机械转行程序员怎么样?
  5. Chrono-Chrome下载管理插件
  6. html魔方转动效果,html5+css3实现旋转魔方的点点滴滴
  7. python2.7的字符串拼接
  8. Android Gradle进阶配置指南 1
  9. ViewPager+Fragment实现页卡切换
  10. huihoo和中国的开源,路在何方???