同一条sql insert 有时快有时慢 引发的血案
同一条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 , 说明一直在使用和增加的。
问题基本定位
- 首先是磁盘性能不高,顺序写才30M ,离散写会降低10倍
- 其次是mysql又使用了swap 空间,这就使得性能更差
- Mysql 开启了双1 验证,就会等待数据刷磁盘,
磁盘使用频率不稳定,导致了mysql的插入时间会时快时慢
如何解决
- 减少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 有时快有时慢 引发的血案相关推荐
- mysql数据库优化语句_【MySQL】10条SQL优化语句,让你的MySQL数据库跑得更快!
慢SQL消耗了70%~90%的数据库CPU资源: SQL语句独立于程序设计逻辑,相对于对程序源代码的优化,对SQL语句的优化在时间成本和风险上的代价都很低: SQL语句可以有不同的写法: 1 不使用子 ...
- 从头开始搞懂 MySQL(07)为什么同一条 SQL 时快时慢
1.为什么 SQL 会变慢 在我们平时工作的时候,有时候会发现,同一条 SQL 语句,在正常执行的时候特别快,但有时候不知道为什么,它就会变慢,并且这样的场景很难复现.是什么导致了 SQL 语句变慢了 ...
- 阿里一面,给了几条SQL,问需要执行几次树搜索操作?
前言 有位朋友去阿里面试,他说面试官给了几条查询SQL,问:需要执行几次树搜索操作?我朋友当时是有点懵的,后来冷静思考,才发现就是考索引的几个基础知识点~~ 本文我们分九个索引知识点,一起来探讨一下. ...
- 爆肝,52条SQL语句,性能优化,干货必收藏 !
作者 | SimpleWu 来源 | cnblogs.com/SimpleWu/p/9929043.html SQL语句性能优化 1, 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 ...
- sql server修改字段编码格式_原理:一条 sql 的执行过程详解
思维导航: 写操作执行过程 组件介绍 1.undo log 与 MVCC 2.redo log 与 Buffer Pool 3.bin log(Server 层) 1.连接器 2.缓存(Cache) ...
- 52条SQL语句性能优化策略
本文会提到 52 条 SQL 语句性能优化策略. 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 WHERE 及 ORDER BY 涉及的列上建立索引. 2.应尽量避免在 WHERE 子句中对字 ...
- 建议收藏 | 全面解析 50+条 SQL 语句性能优化策略
点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 后台回复"k8s",可领取k8s资料 来源:r6d.c ...
- sql加上唯一索引后批量插入_阿里大佬总结的52条SQL语句性能优化策略,建议收藏...
你知道的越多,不知道的就越多,业余的像一棵小草! 你来,我们一起精进!你不来,我和你的竞争对手一起精进! 编辑:业余草 cnblogs.com/SimpleWu/p/9929043.html 推荐:h ...
- 数据库优化:52 条 SQL 语句性能优化策略,果断收藏!
1 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2 应尽量避免在 where 子句中对字段进行 null 值判断,创建表时NULL是默认值 ...
最新文章
- android 蓝牙找不到电脑,Android6.0 蓝牙搜索不到设备原因
- 每天学一点flash(23) flash.net包常用笔记
- php进攻教程,如何对PHP程序中的常见漏洞进行攻击(下)_php基
- golang模板与json的应用
- 剑指offer:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
- TreeMap实现权重随机数Java
- java 总结几种线程异步转同步的方法
- 全国计算机等级考试题库二级C操作题100套(第04套)
- [JavaWeb-HTML]HTML特殊字符表
- IT 实力较量:决战超级数据中心之巅
- (9) tomcat中实现同一虚拟机中所有应用程序单点登录SSO
- 蓝桥杯 ADV-194 算法提高 盾神与积木游戏 java版
- 同一个按钮绑定多个事件_带你走进JavaScript世界系列——事件处理程序之 IE 事件处理...
- hdu 1251 字典树的简单应用
- 开关电容共模反馈学习
- 常见的Ajax写法汇总
- shiro的受权管理
- Vmware、Virtuozoo、Virtual Server 、Xen四款虚拟机的性能比较
- 使用Windows Server 2003实现高可用故障转移群集(1)
- 20220905 buffer overflow detected
热门文章
- Linux安装cx_Oracles
- Hyper-V的管理与使用之一:添加功能
- Win7下Solr4.10.1和TomCat8的安装
- PrincipleCTEbook
- The file or directory to be published does not exist: /data/vendor/bower/jquery/dist
- Drupal 使用 Views 模块时,提示 Requires: Ctools (missing) 解决办法
- sigaction函数使用实例
- 虚拟化(4)_离线克隆与在线克隆
- Android AOP之路三 Android上的注解
- Filter,FilterChain,FilterConfig