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. IOS SWIFT 网络请求JSON解析 基础一

    前言:移动互联网时代,网络通信已经是手机端必不可少的功能.应用中也必不可少地使用了网络通信,增强客户端与服务器交互.使用NSURLConnection实现HTTP的通信.NSURLConnection ...

  2. Java之从控制台读入数据

    0 引言    从控制台中读取数据是一个比较常用的功能,在 JDK 5.0 以前的版本中的实现是比较复杂的,需要手工处理系统的输入流.有意思的是,从 JDK 5.0 版本开始,能从控制台中输入数据的方 ...

  3. 【C# -- OpenCV】Emgu CV 第一个实例

    原文 [C# -- OpenCV]Emgu CV 第一个实例 Emgu CV下载地址 http://sourceforge.net/projects/emgucv/files/ 找最新的下就行了,傻瓜 ...

  4. mysql 创建表 create table详解

      1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ...

  5. android 调用系统打电话和发短,懒得记

     Intent intent = new Intent();         intent.setAction(Intent.ACTION_CALL);         intent.setData( ...

  6. mysql 初识之日志文件篇

    日志文件 1. err日志     error log 记录mysql在运行的过程中所有较为严重的警告和错误信息,以及mysql server每次启动和关闭的详细信息.系统在默认情况下关闭error ...

  7. BZOJ 2705: [SDOI2012]Longge的问题( 数论 )

    T了一版....是因为我找质因数的姿势不对... 考虑n的每个因数对答案的贡献. 答案就是 ∑ d * phi(n / d) (d | n) 直接枚举n的因数然后求phi就行了. 但是我们可以做的更好 ...

  8. 调用 FragmentPagerAdapter.notifyDataSetChanged() 并不能更新其 Fragment之我的解决方法

    private class ViewPagerAdapter extends FragmentPagerAdapter {      FragmentManager mFragmentManager; ...

  9. (08)DBA写给开发的索引经验

          索引可是个大事情,翻开任意一本数据库调优的书,索引都会占到比较大的篇幅.这是个人人都很重视的问题,可往往起始阶段还好,但数据库到最后常常还是会陷入由索引起的性能怪圈中.特别是在上线运行过一 ...

  10. qt之正则表达式

    原地址:http://blog.csdn.net/phay/article/details/7304455 QRegExp是Qt的正则表达式类.Qt中有两个不同类的正则表达式.第一类为元字符.它表示一 ...