同一条sql语句,为什么有时插入块,有时插入慢原因剖析

背景:同一条sql ,有时插入时间几毫秒,有时插入时间几十毫秒,为什么?

Sql角度:简单insert

表角度: 一个主键

系统参数角度:

开启了双1 策略。

也就意味着每次事物就会有刷新磁盘

关闭双1 ,设置为 0 100 ,或者 2 100 ,会极大提升性能。这是因为不刷硬盘了,但不能解决为什么时快时慢问题

操作系统角度

iostat -xmd 1  看磁盘

磁盘 不够快啊。 读写0.15M 就使用了7%

来个顺序文件拷贝, 30M 使用 100%。 离散读写更慢了

使用sar -B 1 可以查看页面交换

pgpgin/s:表示每秒从磁盘或SWAP置换到内存的字节数(KB)

pgpgout/s:表示每秒从内存置换到磁盘或SWAP的字节数(KB)

fault/s:每秒钟系统产生的缺页数,即主缺页与次缺页之和(major + minor)

majflt/s:每秒钟产生的主缺页数.

pgfree/s:每秒被放入空闲队列中的页个数

pgscank/s:每秒被kswapd扫描的页个数

pgscand/s:每秒直接被扫描的页个数

pgsteal/s:每秒钟从cache中被清除来满足内存需要的页个数

%vmeff:每秒清除的页(pgsteal)占总扫描页(pgscank+pgscand)的百分比

这表示 内存和 swap 或者硬盘 有频繁的数据交换

2 哪个进程使用swap 呢

for i in $(ls /proc | grep "^[0-9]" | awk '$0>100'); do awk '/Swap:/{a=a+$2}END{print '"$i"',a/1024"M"}' /proc/$i/smaps;done| sort -k2nr | head

在经过 几个小时后 ,mysql 使用 swap 由 88M 变成了104M , 说明一直在使用和增加的。

问题基本定位

  1. 首先是磁盘性能不高,顺序写才30M ,离散写会降低10倍
  2. 其次是mysql又使用了swap 空间,这就使得性能更差
  3. Mysql 开启了双1 验证,就会等待数据刷磁盘,

磁盘使用频率不稳定,导致了mysql的插入时间会时快时慢

如何解决

  1. 减少mysql使用swap 方式

     把swapness 降为1

    sysctl vm.swappiness=1     并且 /etc/sysctl.conf  中设置为1

  2  降低内存 innodb_buffer_pool_size =4G  原来6G ,节约一部分内存空

  3 开启innodb_numa_interleave = ON    来操作numa

       4 更换SSD 或者不用开启双1,改成 2  100

只调整操作系统参数,不更换硬件,依然开启双一,重启mysql之后呢

可以看到mysql已经不再使用 swap 空间了

但是因为双一参数的使用,每次事物都会刷磁盘,而这个机械磁盘的性能在随机读写的情况下不稳定。会依然存在时快时慢的问题。

转载于:https://www.cnblogs.com/fangxuanlang/p/10439524.html

同一条sql insert 有时快有时慢 引发的血案相关推荐

  1. mysql数据库优化语句_【MySQL】10条SQL优化语句,让你的MySQL数据库跑得更快!

    慢SQL消耗了70%~90%的数据库CPU资源: SQL语句独立于程序设计逻辑,相对于对程序源代码的优化,对SQL语句的优化在时间成本和风险上的代价都很低: SQL语句可以有不同的写法: 1 不使用子 ...

  2. 从头开始搞懂 MySQL(07)为什么同一条 SQL 时快时慢

    1.为什么 SQL 会变慢 在我们平时工作的时候,有时候会发现,同一条 SQL 语句,在正常执行的时候特别快,但有时候不知道为什么,它就会变慢,并且这样的场景很难复现.是什么导致了 SQL 语句变慢了 ...

  3. 阿里一面,给了几条SQL,问需要执行几次树搜索操作?

    前言 有位朋友去阿里面试,他说面试官给了几条查询SQL,问:需要执行几次树搜索操作?我朋友当时是有点懵的,后来冷静思考,才发现就是考索引的几个基础知识点~~ 本文我们分九个索引知识点,一起来探讨一下. ...

  4. 爆肝,52条SQL语句,性能优化,干货必收藏 !

    作者 | SimpleWu 来源 | cnblogs.com/SimpleWu/p/9929043.html SQL语句性能优化 1, 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 ...

  5. sql server修改字段编码格式_原理:一条 sql 的执行过程详解

    思维导航: 写操作执行过程 组件介绍 1.undo log 与 MVCC 2.redo log 与 Buffer Pool 3.bin log(Server 层) 1.连接器 2.缓存(Cache) ...

  6. 52条SQL语句性能优化策略

    本文会提到 52 条 SQL 语句性能优化策略. 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 WHERE 及 ORDER BY 涉及的列上建立索引. 2.应尽量避免在 WHERE 子句中对字 ...

  7. 建议收藏 | 全面解析 50+条 SQL 语句性能优化策略

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 后台回复"k8s",可领取k8s资料 来源:r6d.c ...

  8. sql加上唯一索引后批量插入_阿里大佬总结的52条SQL语句性能优化策略,建议收藏...

    你知道的越多,不知道的就越多,业余的像一棵小草! 你来,我们一起精进!你不来,我和你的竞争对手一起精进! 编辑:业余草 cnblogs.com/SimpleWu/p/9929043.html 推荐:h ...

  9. 数据库优化:52 条 SQL 语句性能优化策略,果断收藏!

    1 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2 应尽量避免在 where 子句中对字段进行 null 值判断,创建表时NULL是默认值 ...

最新文章

  1. android 蓝牙找不到电脑,Android6.0 蓝牙搜索不到设备原因
  2. 每天学一点flash(23) flash.net包常用笔记
  3. php进攻教程,如何对PHP程序中的常见漏洞进行攻击(下)_php基
  4. golang模板与json的应用
  5. 剑指offer:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
  6. TreeMap实现权重随机数Java
  7. java 总结几种线程异步转同步的方法
  8. 全国计算机等级考试题库二级C操作题100套(第04套)
  9. [JavaWeb-HTML]HTML特殊字符表
  10. IT 实力较量:决战超级数据中心之巅
  11. (9) tomcat中实现同一虚拟机中所有应用程序单点登录SSO
  12. 蓝桥杯 ADV-194 算法提高 盾神与积木游戏 java版
  13. 同一个按钮绑定多个事件_带你走进JavaScript世界系列——事件处理程序之 IE 事件处理...
  14. hdu 1251 字典树的简单应用
  15. 开关电容共模反馈学习
  16. 常见的Ajax写法汇总
  17. shiro的受权管理
  18. Vmware、Virtuozoo、Virtual Server 、Xen四款虚拟机的性能比较
  19. 使用Windows Server 2003实现高可用故障转移群集(1)
  20. 20220905 buffer overflow detected

热门文章

  1. Linux安装cx_Oracles
  2. Hyper-V的管理与使用之一:添加功能
  3. Win7下Solr4.10.1和TomCat8的安装
  4. PrincipleCTEbook
  5. The file or directory to be published does not exist: /data/vendor/bower/jquery/dist
  6. Drupal 使用 Views 模块时,提示 Requires: Ctools (missing) 解决办法
  7. sigaction函数使用实例
  8. 虚拟化(4)_离线克隆与在线克隆
  9. Android AOP之路三 Android上的注解
  10. Filter,FilterChain,FilterConfig