mysql-5.7 innodb 的并行任务调度详解
一、innodb并行任务调度是什么:
这里要“考古”一下了,不然问题说不清楚。上大学的时候老师和我们说最初的计算机只有一个核心,并且一次也只能做一件事,
如果你有两件事要用到计算机,在第一件事没有做完之前,后面那件事只能等着。后来呀,计算机就进化了一把,计算机不再
是把一件是做完之后,再去做第二件事,而是一件事只做一段非常短的时间,并不关心这件事有没有做完,它就会去做第二件
事,同样第二件事也只做一段非常短的时间,就回过头去做第一件事;
虽然事实上两件事是交错着做的,由于第一件事都只做一段非常短的时间,所以整体上看起来,两件事是同时都有取得进展的
上面所用到的一个词“一段非常短的时间”,用专业点的话来说就是“时间片”,也就是说每一个任务(事)只会在计算机(cpu)上执
一个时间片这么久,就要被中断,把计算能力让给别的任务,上面的例子为了方便说明我们只是举了两个任务,事实上多个任务
也就这样的,一个任务执行一段时间,就执行下一个任务。
计算机的进化还没有终结,后来的cpu不只是才一个核心,而是有了多个核心,这样计算机就可以有更高的并行度了,任务的调
度算法还是根据时间片那一套来的,这个也从侧面这种算法也是当前比较好靠谱的了。
innodb 任务的调度和上面所说的cpu的任务调度在设计思想上是一样的,innodb会把任务放心一个任务队列中,每次会有m个
任务有时间片,也就是说每次会有m个任务同时在做;
二、innodb 这种调度方式会有什么问题:
由上面所说的innodb每次会有m个任务在执行,如果这个m太大,那么cpu上下文切换就会频繁,这样的话高并行度反而会影响
mysql 性能。
三、控制innodb并行度与任务调试的相关参数:
1、innodb_thread_concurrency 控制着innodb一次并行执行多少任务,也就是多每次最多,多少个任务可以拿到时间片
这个值也就是上文中所提到的m,如果这个值是0表示意思和m=无穷大是一样的。
2、innodb_concurrency_tickets 这个参数定义着每一个任务时间片的长度。
3、innodb_thread_sleep_delay 这个参数说的是当innodb已经同时有innodb_thread_concurrency个任务在执行了,新
的任务来临时,这个新的任务要等innodb_thread_sleep_delay 这么久才能进行innodb的调度队列。
4、innodb_adaptive_max_sleep_delay 确实上面的这些参数大多是用来吹水的,管理员通常不会知道对于一个给定的库
上面这三个参数各个多大才最合理,一方便源于业务的周期性波动,可能白天的时候任务重,晚上的时候没人用,没有那一个
值能适用这么宽的范围。而innodb_adaptive_max_sleep_delay它用于设定管理员容忍极限,例如把innodb_adaptive_max_sleep_delay
设定成150000就是说,任何一个任务在150000微秒后一定要被加入到innodb调度队列。
----
交通学习&打赏
mysql-5.7 innodb 的并行任务调度详解的更多相关文章
- MYSQL服务器my.cnf配置文档详解
MYSQL服务器my.cnf配置文档详解 硬件:内存16G [client] port = 3306 socket = /data/3306/mysql.sock [mysql] no-auto-re ...
- mysql服务性能优化—my.cnf配置说明详解
MYSQL服务器my.cnf配置文档详解硬件:内存16G [client]port = 3306socket = /data/3306/mysql.sock [mysql]no-auto-rehash ...
- Mysql高手系列 - 第9篇:详解分组查询,mysql分组有大坑!
这是Mysql系列第9篇. 环境:mysql5.7.25,cmd命令中进行演示. 本篇内容 分组查询语法 聚合函数 单字段分组 多字段分组 分组前筛选数据 分组后筛选数据 where和having的区 ...
- MySQL 8.0.20 安装教程图文详解(windows 64位)
MySQL 8.0.20 安装教程图文详解(windows 64位) 更新时间:2020年05月09日 15:09:04 转载 作者:瘦肉粥不加糖 这篇文章主要介绍了MySQL 8.0. ...
- ambari-server启动出现ERROR main] DBAccessorImpl:106 - Error while creating database accessor java.lang.ClassNotFoundException:com.mysql.jdbc.Driver问题解决办法(图文详解)
不多说,直接上干货! 问题详情 ambari-server启动时,报如下的错误 问题分析 注:启动ambari访问前,请确保mysql驱动已经放置在/usr/share/Java内且名字是mysql- ...
- 转:InnoDB Log Block Structure(InnoDB日志Block结构详解)
文章转载自等博 InnoDB Log Block Structure(InnoDB日志Block结构详解)
- MySQL慢查询(二) - pt-query-digest详解慢查询日志 pt-query-digest 慢日志分析
随笔 - 66 文章 - 0 评论 - 19 MySQL慢查询(二) - pt-query-digest详解慢查询日志 一.简介 pt-query-digest是用于分析mysql慢查询的一个工具,它 ...
- Mysql高手系列 - 第8篇:详解排序和分页(order by & limit),及存在的坑
这是Mysql系列第8篇. 环境:mysql5.7.25,cmd命令中进行演示. 代码中被[]包含的表示可选,|符号分开的表示可选其一. 本章内容 详解排序查询 详解limit limit存在的坑 分 ...
- Mysql高手系列 - 第14篇:详解事务
这是Mysql系列第14篇. 环境:mysql5.7.25,cmd命令中进行演示. 开发过程中,会经常用到数据库事务,所以本章非常重要. 本篇内容 什么是事务,它有什么用? 事务的几个特性 事务常见操 ...
随机推荐
- 为什么空格拷贝到linux 会变成两个
为什么空格拷贝到linux 会变成两个 学习了:https://zhidao.baidu.com/question/266438357.html 在vi界面内输入:set paste 然后进行拷贝: ...
- LCS 算法
下面的程序分别实现了使用LCS求连续子串和不连续子串的匹配情况! http://beyond316.blog.51cto.com/7367775/1266360
- Discuz常见小问题-如何使用QQ登陆
在首页中找到超链接 往下翻找到QQ互联,注意如果是内网无法开通(需要网站上传之后)
- shell 编程笔记
#! /bin/sh 寻找shell解释器 /bin/sh 是一个路径 #! /usr/bin/python 仅仅是寻找一个python的解释器 执行linux程序的方法: 使得文件具有可执行的权限 ...
- IOS学习笔记44--ASIRequestHttp之BUG(一)
其实这也是无意间看到的,大家看看是不是这么回事 BUG:当下载线程数超过2时,就会影响到主线程响应用户请求的速度了 看ASIRequestHttp.m--requestFinished代码 - (vo ...
- storm0.9.0.1升级安装
来自:http://blog.csdn.net/liuzhoulong/article/details/21112101 1,下载0.9.0.1 http://storm.incubator.apac ...
- 【CMS】DedeCMS Error: (PHP 5.3 and above) Please set 'request_order' ini value to include C,G and P (recommended: 'CGP') in php.ini
DedeCMS Error: (PHP 5.3 and above) Please set 'request_order' ini value to include C,G and P (recomm ...
- C10K——千万级并发实现的秘密:内核不是解决方案,而是问题所在!(转)
既然我们已经解决了 C10K并发连接问题,应该如何提高水平支持千万级并发连接?你可能会说不可能.不,现在系统已经在用你可能不熟悉甚至激进的方式支持千万级别的并发连接. 要知道它是如何做到的,我们首先要 ...
- Linux查看GPU信息和使用情况
Linux查看显卡信息: lspci | grep -i vga 使用nvidia GPU可以: lspci | grep -i nvidia [root@gpu-server-002 ~]# lsp ...
- nyoj------------找球号(一)
找球号(一) 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 在某一国度里流行着一种游戏.游戏规则为:在一堆球中,每个球上都有一个整数编号i(0&l ...