影响mysql server性能的相关因素

需求和架构及业务实现优化:55%

Query语句优化:30%

数据库自身优化:15%

很多时候大家看到数据库应用系统中性能瓶颈出现在数据库方面,就希望通过数据库的优化来解决问题,但不管DBA对数据库多么了解,对Query语句的优化多么静态,最终还是很难解决整个系统的性能问题,原因在于并没有找到根本的症结所在。

所以数据库的优化实际上是一个需要多方面配合多方面优化才能根本性改善的事情,可以概括性的归为:商业需求合理化、系统架构最优化、实现逻辑精简化、硬件设施理性化。

mysql数据库锁定机制

mysql各存储引使用了三种锁定机制:行级锁定、表级锁定和页级锁定。这里主要谈一下InnoDB存储引擎实现的行级锁定(NDB Cluster也是行级锁定的存储引擎)。InnoDB和其他数据库的行级锁定机制类似,都有共享锁S和排他锁X,为了让行级锁定和表级锁定共存,

InnoDB同样使用了意向锁的概念(表级锁定),就有了意向共享锁IS和意向排他锁IX。共享锁可以共存,但排他锁不可以,InnoDB和其他数据库最大的不同是实现行锁的机制,其他数据库时通过在需要锁定的某行记录所在的物理Block上的事务槽上面添加锁定信息,而

InnoDB的锁定是通过指向数据记录的第一个索引建之前和最后一个索引建之后的空域表级锁定信息实现行级锁定,被称为间隙锁。间隙锁有很多弱点:

1.锁定一个范围键值之后即使某些不存在的键值也会被锁定,这就造成了锁定范围内无法插入数据,会对性能带来影响。

2.当Query无法命中索引的时候,InnoDB会放弃行锁定而改用表锁定,造成并发性能降低

众所周知,行级锁定会造成死锁的存在,死锁产生的原因:

1.不同表,相同的记录(事务A和事务B操作两张表的相同记录,顺序不一致)

2.相同表记录(事务A和事务B操作同一张的表的相同记录,顺序不一致:jobA处理的的id列表为[1,2,3,4],而job处理的id列表为[8,9,10,4,2])

3.不同的索引冲突:事务A在执行时,除了在二级索引加锁外,还会在聚簇索引上加锁,在聚簇索引上加锁的顺序是[1,4,2,3,5],而事务B执行时,只在聚簇索引上加锁,加锁顺序是[1,2,3,4,5],这样就造成了死锁的可能性

InnoDB监测死锁的机制是选择较小的事务回滚,标准是衡量插入或者更新删除数据的多少。

InnoDB行锁优化建议:

1.尽可能让所有数据检索都通过索引来完成,避免升级为表级锁定

2.合理设计索引,可以缩小行锁的锁定范围,避免造成不必要的锁定影响其他Query执行

3.尽可能减少基于范围的数据检索过滤条件,避免间隙锁锁定不该锁定的记录

4.控制事务大小,减少锁定的资源量和锁定时间长度

5.使用较低级别的事务隔离

减少死锁建议:

1.尽可能按照相同顺序的来访问资源

2.在同一个事务中尽可能做到一次性锁定所有资源,减少死锁的概率

3.对于非常容易产生死锁的业务部分尝试升级锁的粒度,通过表级锁定来减少死锁产生的概率

系统锁定争用情况查询:

表级锁定:SHOW STATUS LIKE 'table%';Table_locks_immediate(表级锁定的次数),Table_locks_waited(表级锁定争用次数)

行级锁定:SHOW STATUS LIKE 'innodb_row_lock%';Innodb_row_lock_current_waits(当前正在锁定的数量),Innodb_row_lock_time(从系统启动到现在锁定总时间长度),Innodb_row_lock_time_avg/max(平均时间/最长的一次时间),Innodb_row_lock_waits(等待次数)

 

mysql性能调优——锁优化的更多相关文章

  1. mysql性能调优——Query优化

    上节谈了关于mysql锁定机制的优化方案,下面来谈一下Query优化——Mysql Query Optimizer 当Mysql Query Optimizer接受到从Query Parser过来的Q ...

  2. MySQL性能调优——锁定机制与锁优化分析

    针对多线程的并发访问,任何一个数据库都有其锁定机制,它的优劣直接关系着数据的一致完整性与数据库系统的高并发处理性能.锁定机制也因此成了各种数据库的核心技术之一.不同数据库存储引擎的锁定机制是不同的,本 ...

  3. MySql(七):MySQL性能调优——锁定机制与锁优化分析

    针对多线程的并发访问,任何一个数据库都有其锁定机制,它的优劣直接关系着数据的一致完整性与数据库系统的高并发处理性能.锁定机制也因此成了各种数据库的核心技术之一.不同数据库存储引擎的锁定机制是不同的,本 ...

  4. MySql(十一):MySQL性能调优——常用存储引擎优化

    一.前言 MySQL 提供的非常丰富的存储引擎种类供大家选择,有多种选择固然是好事,但是需要我们理解掌握的知识也会增加很多.本章将介绍最为常用的两种存储引擎进行针对性的优化建议. 二.MyISAM存储 ...

  5. MySQL性能调优与架构设计——第11章 常用存储引擎优化

    第11章 常用存储引擎优化 前言: MySQL 提供的非常丰富的存储引擎种类供大家选择,有多种选择固然是好事,但是需要我们理解掌握的知识也会增加很多.每一种存储引擎都有各自的特长,也都存在一定的短处. ...

  6. MySQL性能优化总结___本文乃《MySQL性能调优与架构设计》读书笔记!

    一.MySQL的主要适用场景 1.Web网站系统 2.日志记录系统 3.数据仓库系统 4.嵌入式系统 二.MySQL架构图: 三.MySQL存储引擎概述 1)MyISAM存储引擎 MyISAM存储引擎 ...

  7. MySQL性能调优与架构设计——第10章 MySQL数据库Schema设计的性能优化

    第10章 MySQL Server性能优化 前言: 本章主要通过针对MySQL Server(mysqld)相关实现机制的分析,得到一些相应的优化建议.主要涉及MySQL的安装以及相关参数设置的优化, ...

  8. MySQL性能调优与架构设计——第9章 MySQL数据库Schema设计的性能优化

    第9章 MySQL数据库Schema设计的性能优化 前言: 很多人都认为性能是在通过编写代码(程序代码或者是数据库代码)的过程中优化出来的,其实这是一个非常大的误区.真正影响性能最大的部分是在设计中就 ...

  9. MySQL性能调优与架构设计——第8章 MySQL数据库Query的优化

    第8章 MySQL数据库Query的优化 前言: 在之前“影响 MySQL 应用系统性能的相关因素”一章中我们就已经分析过了Query语句对数据库性能的影响非常大,所以本章将专门针对 MySQL 的 ...

随机推荐

  1. 微信小程序组件解读和分析:八、checkbox复选项

    checkbox复选项组件说明: checkbox是小程序表单组件中的一个组件,作用是在表单中引导用户做出选择. 要使用checkbox组件,还需要在同组中所有的checkbox标签外使用checkb ...

  2. 解决VS2010警告unsuccessfulbuild”,因为已指定“AlwaysCreate”

    找到文件C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets: 定位到<Touch Alway ...

  3. (转)淘淘商城系列——SSM框架整合之Dao层整合

    http://blog.csdn.net/yerenyuan_pku/article/details/72721093 一个项目中往往有三层即Dao层.Service层和Web层,看标题就知道了,本文 ...

  4. 经典问题——输出n对括号的所有组合

    问题 n对括号有多少种合法的组合,比如两对括号可以有两种:()()和(()) 思路 问题等价为:在一个字符串中包含两种字符:'('和')',他们出现的次数都为n,并且任何时候'('出现的次数总是大于或 ...

  5. vue-router 基本使用(vue工程化)

    (1)概念: 路由,其实就是指向的意思,当我点击页面上的home按钮时,页面中就要显示home的内容,如果点击页面上的about 按钮,页面中就要显示about 的内容.Home按钮  => h ...

  6. h5 中MP3 播放暂停 jq

    <!--音乐--> <div id="music"> <img src="../img/music.gif" class=&quo ...

  7. 自动下载相对应的jar包

    一.去到需要的 maven下载地址 http://mvnrepository.com/artifact/org.apache.struts/struts2-core/2.5.13 二.然后去到 pom ...

  8. Go:数组

    package main import "fmt" func main() { // 定义数组的方式 var array1 [3]int array2 := [3]int{} fm ...

  9. PHP:获取用户IP

    文章来源:http://www.cnblogs.com/hello-tl/p/7685263.html //获取用户ip(外网ip 服务器上可以获取用户外网Ip 本机ip地址只能获取127.0.0.1 ...

  10. 谷歌应用商店chrome扩展程序和APP的发布流程

    互联网上有很多大牛,他们再工作中需要一些难题,再找到解决办法后,如果会使用js的话,大多数人就可以自己动手写一个chrome插件,而且非常容易.开发人员都喜欢与大家分享自己的成就!google是一个全 ...