14.4.6 Configuring Thread Concurrency for InnoDB  配置Thread 并发

InnoDB 使用操作系统threads 来处理用户的事务请求。(事务可以执行很多请求到InnoDB 在它们提交或者回

滚前)

在现代的操作系统和多核服务器,
上下文切换是有效的,很多的负载运行很多在没有任何并发数限制。 可扩展性改进在MySQL 5.5和以上版本按降低了并发数量的限制 它是有助于减少上下文切换在threads之间,InnoDB 可以使用一些技术来限制并发执行操作系统threads的数 量
(因此,在任何一个时间点处理的请求数). 当InnoDB 接收一个新的请求从一个用户会话,如果threads的并发数量在一个预先定义的限制, 新的请求sleep 短暂的时间在它再次尝试之前,请求不能被重新安排在sleep 被放入到 first-in/first-out 队列
你可以限制并发线程数 通过设置 innodb_thread_concurrency. mysql> show variables like '%innodb_thread_concurrency%';
+---------------------------+-------+
| Variable_name | Value |
+---------------------------+-------+
| innodb_thread_concurrency | 0 |
+---------------------------+-------+
1 row in set (0.00 sec) 一旦 执行的threads 达到这个限制,额外的threads 会等待数微妙, 此前, 它需要经验来找到优化的值对于innodb_thread_sleep_delay, 优化的值可以改变依赖复杂, 在MySQL 5.6.3 和更高的版本,你可以设置配置选项 innodb_adaptive_max_sleep_delay 到允许的对于innodb_thread_sleep_delay, InnoDB 自动调整innodb_thread_sleep_delay 高或者低 依赖于当前的thread-scheduling activity 这个动态调整有助于thread scheduling 机制来工作平顺的 在系统是负载较轻的和接近于满负荷 InnoDB 使线程sleep只有当 并发的线程数受限制, 当对于线程数没有限制的时候, 所有的线程都会被调度。也就是说, 如果 innodb_thread_concurrency是0, innodb_thread_sleep_delay 会被忽略。 当这里有限制限制时( 当innodb_thread_concurrency 值大于0), InnoDB 降低上下文负载通过允许多个请求 在单个SQL语句执行期间来进入InnoDB 没有关注 innodb_thread_concurrency的设置。 因为一个SQL语句(比如一个关联)
可能 包含多个行记录在InnoDB,InnoDB 分配一个指定数量的tickets 允许一个线程被调度多次 以最小的开销 当一个SQL 语句启动, 一个thread 没有tickets, 它必须观察innodb_thread_concurrency。 一旦线程有权进入InnoDB, 它会被分配一个 rickets的number 可以用于随后进入InnoDB 来执行记录操作。 如果tickets 用完, thread 被驱逐,innodb_thread_concurrency 再次观察,可以放置thread 到 等待thread 的first-in/first-out queue。 当thread 是再次允许进入InnoDB, tickets 再次被分配。 分配的tickets 的数量是通过全局变量 innodb_concurrency_tickets指定,默认是5000 mysql> show variables like '%innodb_concurrency_tickets%';
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| innodb_concurrency_tickets | 5000 |
+----------------------------+-------+
1 row in set (0.00 sec) 一个thread 等待一个lock 是给一个ticket 一旦locks 变的可用 那些变量的争取的值依赖你的环境和负载, 尝试一些不同的值来决定最合适的值对你的应用。 在限制并发执行threads的数量, 重新查询配置选项 可能改善InnoDB的性能

14.4.6 Configuring Thread Concurrency for InnoDB 配置Thread 并发的更多相关文章

  1. 14.6.6 Configuring Thread Concurrency for InnoDB 配置线程并发

    14.6.6 Configuring Thread Concurrency for InnoDB 配置线程并发 InnoDB 使用操作系统线程来处理请求(用户事务) 事务可能执行很多次在它们提交或者回 ...

  2. 14.6.11 Configuring Optimizer Statistics for InnoDB 配置优化统计信息用于InnoDB

    14.6.11 Configuring Optimizer Statistics for InnoDB 配置优化统计信息用于InnoDB 14.6.11.1 Configuring Persisten ...

  3. 15.6.6 Configuring Thread Concurrency for InnoDB

    innodb_thread_concurrency 设置inndb线程个数,如果超过则休眠一段时间,时间根据 innodb_thread_sleep_delay 单位为微妙,然后放进队列. innod ...

  4. MySQL InnoDB配置并发线程( innodb_thread_concurrency)

    http://www.ywnds.com/?p=9821 一.thread_concurrency 首先,最重要的一点,这个参数已经在最新版本的MySQL中被移除了,官方最新5.7版本的doc上面对t ...

  5. 14.6.8 Configuring the InnoDB Master Thread IO Rate 配置InnoDB 主线程IO 速率:

    14.6.8 Configuring the InnoDB Master Thread IO Rate 配置InnoDB 主线程IO 速率: 主线程 在InnoDB 是一个线程 执行各种任务在后台. ...

  6. 14.4.8 Configuring the InnoDB Master Thread IO Rate 配置InnoDB Master Thread I/O Rate

    14.4.8 Configuring the InnoDB Master Thread IO Rate 配置InnoDB Master Thread I/O Rate 主的master thread ...

  7. 14.6.7 Configuring the Number of Background InnoDB IO Threads 配置InnoDB IO Threads的数量

    14.6.7 Configuring the Number of Background InnoDB IO Threads 配置InnoDB IO Threads的数量 InnoDB 使用后台线程来服 ...

  8. 14.6.2 Configuring InnoDB for Read-Only Operation

    14.6.2 Configuring InnoDB for Read-Only Operation 配置InnoDB只读操作 你可以查询InnoDB 表MySQL 数据目录是一个只读介质,通过启用 - ...

  9. 14.4.7 Configuring the Number of Background InnoDB IO Threads 配置 后台InnoDB IO Threads的数量

    14.4.7 Configuring the Number of Background InnoDB IO Threads 配置 后台InnoDB IO Threads的数量 InnoDB 使用bac ...

随机推荐

  1. SQL Server 基础 01 数据库、表操作

    对着书慢慢学习,一天一点点! 数据库操作 (create.alter.drop)  --3-3-1 /create database 语句创建数据库 create database testSQL - ...

  2. 摘抄python __init__

    注意1.__init__并不相当于C#中的构造函数,执行它的时候,实例已构造出来了. 1 2 3 4 5 class A(object):     def __init__(self,name):   ...

  3. 获取浏览器版本Asp.Net

    public static string GetBrowser() { HttpBrowserCapabilities bc = HttpContext.Current.Request.Browser ...

  4. php:兄弟连之面向对象版图形计算器2

    上篇说到通过result.class.php来分流,因为三个类都继承了shape这个类,让我们来看一下,面向对象中的继承. shape.class.shape文件 <?php abstract ...

  5. 【AC大牛陈鸿的ACM总结贴】【ID AekdyCoin】人家当初也一样是菜鸟

    acm总结帖_By AekdyCoin 各路大牛都在中国大陆的5个赛区结束以后纷纷发出了退役帖,总结帖,或功德圆满,或死不瞑目,而这也许又会造就明年的各种"炸尸"风波.为了考虑在发 ...

  6. c语言, objective code(new 1)

    c struct, objective code //////// //// typedef int (*PF_EAT) (char* food, const int cnt); typedef in ...

  7. TImage也有OnClick事件,可以当按钮使用,配上合适的图片(背景透明,效果前凸)更是几乎以假乱真

    本质上TImage与TSpeedButton没有什么区别,都是没有句柄的,但都可以执行OnClick事件.有空分析一下.

  8. MVCC浅析(转)

    在并发读写数据库时,读操作可能会不一致的数据(脏读).为了避免这种情况,需要实现数据库的并发访问控制,最简单的方式就是加锁访问.由于,加锁会将读写操作串行化,所以不会出现不一致的状态.但是,读操作会被 ...

  9. SLF4J warning or error messages and their meanings(转)

    The method o.a.commons.logging.impl.SLF4FLogFactory#release was invoked. Given the structure of the ...

  10. atitit.集filt经营分部 filter总结

    atitit.集filt经营分部 filter总结 1. Css sltr 1 2. 基本选择器(依据id,class,元素名) 2 3. 层次选择器 3 4. 过滤选择器 3 5. First,la ...