面试常问MySQL性能优化问题
面试常问MySQL性能优化问题
知识综述:
[1] MySQL中锁的种类:
常见的表锁和行锁,也有Metadata Lock等等,表锁是对一整张表加锁,分为读锁和写锁,因为是锁住整张表,所以会导致并发能力下降,一般是做ddl处理时使用。
行锁则是锁住数据行,这种加锁方法比较复杂,但是由于只锁住有限的数据,对于其它数据不加限制,所以并发能力强,MySQL一般都是用行锁来处理并发事务
[2] MySQL四种隔离机制
未提交读(Read Uncommitted):允许脏读,也就是可能读取到其他会话中未提交事务修改的数据。
提交读(Read Committed):只能读取到已经提交的数据。Oracle等多数数据库默认都是该级别 (不重复读)。
可重复读(Repeated Read):可重复读。在同一个事务内的查询都是事务开始时刻一致的,InnoDB默认级别。在SQL标准中,该隔离级别消除了不可重复读,但是还存在幻象读。
串行读(Serializable):完全串行化的读,每次读都需要获得表级共享锁,读写相互都会阻塞。
[3]多版本并发控制MVCC
MySQL InnoDB存储引擎,实现的是基于多版本的并发控制协议——MVCC.
MVCC最大的好处,相信也是耳熟能详:读不加锁,读写不冲突。在读多写少的OLTP应用中,读写不冲突是非常重要的,极大的增加了系统的并发性能,这也是为什么现阶段,几乎所有的RDBMS,都支持了MVCC。
在MVCC并发控制中,读操作可以分成两类:快照读 (snapshot read)与当前读 (current read).
快照读:简单的select操作,属于快照读,不加锁。(当然,也有例外,下面会分析)
select * from table where ?;
当前读:特殊的读操作,插入/更新/删除操作,属于当前读,需要加锁。
select * from table where ? lock in share mode;
select * from table where ? for update;
insert into table values (…);
update table set ? where ?;
delete from table where ?;
1、如何理解MySQL中加锁原理
mysql加锁机制 :
根据类型可分为共享锁(SHARED LOCK)和排他锁(EXCLUSIVE LOCK)或者叫读锁(READ LOCK)和写锁(WRITE LOCK)。
根据粒度划分又分表锁和行锁。表锁由数据库服务器实现,行锁由存储引擎实现。
2、MySQL最终死锁形成的原因
争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.
此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等竺的进程称为死锁进程.
表级锁不会产生死锁.所以解决死锁主要还是针对于最常用的InnoDB.
死锁的关键在于:两个(或以上)的Session加锁的顺序不一致。
那么对应的解决死锁问题的关键就是:让不同的session加锁有次序
3、MySQL连接池的连接数说爆就爆了?
出现这种错误明显就是 mysql_connect 之后忘记 mysql_close;
当大量的connect之后,就会出现Too many connections的错误。
面试常问MySQL性能优化问题相关推荐
- 前端面试被问到性能优化该肿么办!
性能优化1 前端面试被问到性能优化该肿么办! 1.1 页面重构怎么操作? 网站重构:在不改变外部行为的前提下,简化结构.添加可读性,而在网站前端保持一致的行为. 也就是说是在不改变UI的情况下,对网站 ...
- 面试被问Mysql没答上来?阿里P5:总结了55道常见面试题,收藏一波
转载自 面试被问Mysql没答上来?阿里P5:总结了55道常见面试题,收藏一波 正文开始前,分享阿里 P8 高级架构师吐血总结的 <Java 核心知识体系&面试资料.pdf>, ...
- MySQL面试常问大全
MySQL面试常问大全 1.关系型数据库和非关系型数据库的区别? 其实很好理解,先说一下最直白的的区别,关系型数据库中的数据有关系,非关系型数据库的数据无关系: 关系型数据库(Mysql和Oracle ...
- mysql左连接_面试考MySQL性能优化,一个问题就干趴下了!
MySQL作为最流行的关系型数据库管理系统,重要性不言而喻.面试时它也是重点考察对象之一,估计大家都有过被MySQL相关问题支配的经历: 如何理解MySQL中加锁原理以及最终死锁形成的原因 ? 介绍一 ...
- 计算机考研复试面试常问问题 数据库篇
计算机考研复试面试常问问题 数据库篇 在复习过程中,我用心查阅并整理了在考研复试面试中可能问到的大部分问题,并分点整理了答案,可以直接理解背诵并加上自己的语言润色!极力推荐打印下来看,效率更高!绝对良 ...
- 给大家提供一些面试常问的问题
给大家提供一些面试常问的问题 1. 简述 private. protected. public. internal 修饰符的访问权限. 答 . private : 私有成员, 在类的内部才可以 ...
- 【MySQL性能优化】概述与优化方面(一)
转载自 http://chenhaoxiang.cn/2018/02/04/1758/ 像sql语句如何进行调优,基本上在中高级程序员面试中都有可能会被问到. 所以说,了解,或者学习一下如何进行sql ...
- servlet面试常问问题_50个Servlet面试问答
servlet面试常问问题 Servlet是Java EE的一个非常重要的主题,所有Web应用程序框架(例如Spring和Struts)都建立在它之上. 这使servlet成为Java访谈中的热门话题 ...
- 《MySQL性能优化和高可用架构实践》阅读总结
文章目录 介绍 第1章 MySQL架构介绍 1.1 MySQL简介 1.2 MySQL主流的分支版本 1.3 MySQL存储引擎 1.4 MySQL逻辑架构 1.5 MySQL物理文件体系结构 第2章 ...
最新文章
- ivew 双向绑定时间控件
- Android开源音视频播放器
- windows终止进程——taskkill
- 致 Python 初学者们!
- oracle all_policies,Oracle数据库权限管理学习笔记
- Spring DI如何给对象赋空值 以及 对 “” null 空值的总结
- php odbc 结果集处理,php常用ODBC函数集的简单示例
- 太原理工计算机组成原理报告,太原理工计算机组成原理考试题.pdf
- 常见的.net误解 1-1 字符串是不可修改的(immutable)
- mouse是计算机软件吗,手机控制电脑软件(EasyMouse)手机端
- ArcGIS中通过JPG图片文件提取矢量要素
- 摆脱学校WiFi的设备数限制——无线桥接
- CSS3的动画与变形
- php百分比乘加,PHP学习笔记第一篇 基础知识
- root卡开机画面不动了,手机root卡住不动
- HTML中常见的选择器 的优先级
- linux网络之怪现象一--接网线启动网络不通,不接网线启动再插线网络通
- java 获取ftp 文件路径_java在浏览器上获取FTP读文件路径
- c语言位置模拟,GPS模拟C语言.docx
- Linux的系统架构(linux由哪几部分组成?)