自旋(spin)是一种通过不间断地测试来查看一个资源是否变为可用状态的等待操作,用于仅需要等待很短的时间等待所需资源的场景。使用自旋这种“空闲循环(busy-loop)”来完成资源等待的方式要比通过上下文切换使线程转入睡眠状态的方式要高效得多。但如果自旋了一个很短的时间后其依然无法获取资源,则仍然会转入前述第二种资源等待方式。

innodb_sync_spin_loops参数是自旋锁的轮转数,可以通过show engine innodb status来查看。相较于系统等待,自旋锁是低成本的等待;不过它是一个活跃的等待,会浪费一些cpu资源。因此如果看到大量的自旋等待和自旋轮转,则很显然它浪费了很多cpu资源。浪费cpu时间和无谓的上下文切换之间可以通过该值来平衡。

innodb_spin_wait_delay

innodb_thread_concurrency

关于innodb_thread_concurrency参数

Command-Line Format--innodb_thread_concurrency=#

Option-File Formatinnodb_thread_concurrency

Option Sets VariableYes, innodb_thread_concurrency

Variable Nameinnodb_thread_concurrency

Variable ScopeGlobal

Dynamic VariableYes

Permitted Values

Typenumeric

Default0

Range0 .. 1000

InnoDB tries to keep the number of operating system threads concurrently inside InnoDB less than or equal to the limit given by this variable. Once the number of threads reaches this limit, additional threads are placed into a wait state within a FIFO queue for execution. Threads waiting for locks are not counted in the number of concurrently executing threads.

The correct value for this variable is dependent on environment and workload. Try a range of different values to determine what value works for your applications. A recommended value is 2 times the number of CPUs plus the number of disks.

The range of this variable is 0 to 1000. A value of 0 (the default) is interpreted as infinite concurrency (no concurrency checking). Disabling thread concurrency checking enables InnoDB to create as many threads as it needs.

参数的含义是: InnoDB内部的并发线程数.

可以动态修改

具体解析: InnoDB 试图保持InnoDB内部的并发操作系统的线程数少于innodb_thread_concurrency设置的值

如果innodb并发线程数快要到达innodb_thread_concurrency=x,其他的innodb线程会被设置为等待状态,队列的算法是FIFO

处于等待拿锁状态的线程数,不会被计算入正在执行的并发线程数

innodb_thread_concurrency=x,x该设怎样的值,视服务器配置和服务器的负载情况。

默认推荐的值是 (cpu的数量+磁盘数量)x2 (我的理解,对于raid10的磁盘阵列,应该是磁盘总数/2)

参数取值范围 0-1000 当为默认值的时候,不是说0个并发线程。 而是被解释为无限并发(没有并发检查)

当innodb_thread_concurrency=0的时候,可以理解为 禁用线程并发检查,使InnoDB按照请求的需求, 创造尽可能多的线程.

http://www.dbathink.com/2012/10/trouble-shooting-the-high-sys-cpu-in-mysql-server/

原文:http://www.cnblogs.com/yuyue2014/p/4809549.html

mysql自旋锁_mysql 自旋锁相关推荐

  1. mysql mdl 锁_MySQL MDL锁

    MDL全称为metadata lock,即元数据锁.MDL锁主要作用是维护表元数据的数据一致性,在表上有活动事务(显式或隐式)的时候,不可以对元数据进行写入操作.因此从MySQL5.5版本开始引入了M ...

  2. mysql全局读写怎么锁_MySQL全局锁和表锁

    最近正好在看操作系统中关于线程,锁的部分,也可以学习一下数据库种的锁. MySQL的锁分为全局锁,表级锁,行锁三类. 全局锁 名思义,全局锁就是对整个数据库实例加锁.MySQL提供了一个加全局读锁的方 ...

  3. mysql 全局锁_Mysql全局锁和表级锁

    以前对Mysql的锁的认识,只了解表锁和行锁,其实Mysql的锁的种类还是不少的,有全局锁,表级锁,行级锁,还有元数据锁,间隙锁,临界锁. 一 全局锁 Mysql的全局锁是对整个实例加锁,加锁之后,数 ...

  4. mysql默认使用悲观锁_mysql乐观锁和悲观锁详解

    mysql乐观锁和悲观锁详解 相信很多朋友在面试的时候,都会被问到乐观锁和悲观锁的问题,如果不清楚其概念和用法的情况下,相信很多朋友都会感觉很懵逼,那么面试的结果也就不言而喻了. 那么乐观锁和悲观锁到 ...

  5. mysql如何使用乐观锁_mysql 乐观锁和悲观锁

    数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性. 乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的 ...

  6. mysql innodb默认的锁_Mysql InnoDB锁

    MySQL 不同引擎的锁机制: MyISAM和MEMORY采用表级锁(table-level locking) BDB采用页面锁(page-leve locking)或表级锁,默认为页面锁 InnoD ...

  7. mysql 事务排他锁_mysql排他锁

    1.排他锁示范: 排他锁:x锁,加完排他锁,事务不释放或者不提交,其他事务无法进行对应数据的操作(其他事务无法拿到对应的排他锁) -- 新建一个连接 select @@autocommit; set ...

  8. innodb 悲观锁 乐观锁_mysql乐观锁、悲观锁、共享锁、排它锁、行锁、表锁

    mysql乐观锁.悲观锁.共享锁.排它锁.行锁.表锁 乐观锁 总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使 ...

  9. mysql innodb 锁_MySQL/InnoDB锁机制

    显式加锁 select ... lock in share mode:加 S 锁 select ... for update:加 X 锁 MySQL快照读和当前读 在一个支持MVCC并发控制的系统中, ...

最新文章

  1. Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  2. AES加密_ js与C#互通
  3. python关键字列表的表达式,python 列表推导和生成器表达式的使用
  4. 快速看完整部教材,列出你不懂的 5 - 10 个问题
  5. 微服务的概念——《微服务设计》读书笔记
  6. python图标icon_用Python提取exe图标icon
  7. java查看weblogic服务器_java判断服务器是那种,例如区分tomcat和weblogic | 学步园
  8. vue 列表更改排序,不刷新问题
  9. tensorflow学习(一)——有关tensorflow不同层的使用(tf.nn 和tf.layers以及tf.contrib.layers)的简单区别
  10. 各种采样,上采样,下采样,欠采样,子采样
  11. cookie二级域名和三级域名跨域实践
  12. qemuuser模式运行linux,qemu两种上网方式
  13. 黑鲨重装计算机安装无法继续,黑鲨教你重装系统解决电脑开机无法进入系统问题...
  14. Win10安装Neo4j
  15. system函数和signal(SIGCHLD, SIG_DFL)的“固定搭配”
  16. 【地图学】地图投影的定义和分类
  17. VS2017使用gtest
  18. 【AI面试】L1 loss、L2 loss和Smooth L1 Loss,L1正则化和L2正则化
  19. 为什么使用Flatten layer?
  20. HDU 2188 经典巴什博弈

热门文章

  1. 内存优化总结: ptmalloc、tcmalloc 和 jemalloc
  2. 电脑变慢,4K对齐来解决
  3. 【倾斜摄影】——三维建模软件ContextCapture 空三质量报告详细解读
  4. ERP Oracle应用
  5. 从苦寻ADSL拨号王想到的 -- 需到用时方恨知道的少啊
  6. 2022支付宝集五福攻略,一天20张不是事
  7. Win11重启后无法进入系统解决办法
  8. 分享120个ASP源码,总有一款适合您
  9. python弹幕分析_《用python 玩转数据》项目——B站弹幕数据分析
  10. 锅炉实现物联网云平台方案