面试常问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的错误。

  

posted on 2019-04-10 10:13 sun_Y 阅读(...) 评论(...) 编辑 收藏

面试常问MySQL性能优化问题相关推荐

  1. 前端面试被问到性能优化该肿么办!

    性能优化1 前端面试被问到性能优化该肿么办! 1.1 页面重构怎么操作? 网站重构:在不改变外部行为的前提下,简化结构.添加可读性,而在网站前端保持一致的行为. 也就是说是在不改变UI的情况下,对网站 ...

  2. 面试被问Mysql没答上来?阿里P5:总结了55道常见面试题,收藏一波

    转载自  面试被问Mysql没答上来?阿里P5:总结了55道常见面试题,收藏一波 正文开始前,分享阿里 P8 高级架构师吐血总结的 <Java 核心知识体系&面试资料.pdf>, ...

  3. MySQL面试常问大全

    MySQL面试常问大全 1.关系型数据库和非关系型数据库的区别? 其实很好理解,先说一下最直白的的区别,关系型数据库中的数据有关系,非关系型数据库的数据无关系: 关系型数据库(Mysql和Oracle ...

  4. mysql左连接_面试考MySQL性能优化,一个问题就干趴下了!

    MySQL作为最流行的关系型数据库管理系统,重要性不言而喻.面试时它也是重点考察对象之一,估计大家都有过被MySQL相关问题支配的经历: 如何理解MySQL中加锁原理以及最终死锁形成的原因 ? 介绍一 ...

  5. 计算机考研复试面试常问问题 数据库篇

    计算机考研复试面试常问问题 数据库篇 在复习过程中,我用心查阅并整理了在考研复试面试中可能问到的大部分问题,并分点整理了答案,可以直接理解背诵并加上自己的语言润色!极力推荐打印下来看,效率更高!绝对良 ...

  6. 给大家提供一些面试常问的问题

    给大家提供一些面试常问的问题 1. 简述 private. protected. public. internal 修饰符的访问权限. 答 . private :     私有成员, 在类的内部才可以 ...

  7. 【MySQL性能优化】概述与优化方面(一)

    转载自 http://chenhaoxiang.cn/2018/02/04/1758/ 像sql语句如何进行调优,基本上在中高级程序员面试中都有可能会被问到. 所以说,了解,或者学习一下如何进行sql ...

  8. servlet面试常问问题_50个Servlet面试问答

    servlet面试常问问题 Servlet是Java EE的一个非常重要的主题,所有Web应用程序框架(例如Spring和Struts)都建立在它之上. 这使servlet成为Java访谈中的热门话题 ...

  9. 《MySQL性能优化和高可用架构实践》阅读总结

    文章目录 介绍 第1章 MySQL架构介绍 1.1 MySQL简介 1.2 MySQL主流的分支版本 1.3 MySQL存储引擎 1.4 MySQL逻辑架构 1.5 MySQL物理文件体系结构 第2章 ...

最新文章

  1. ivew 双向绑定时间控件
  2. Android开源音视频播放器
  3. windows终止进程——taskkill
  4. 致 Python 初学者们!
  5. oracle all_policies,Oracle数据库权限管理学习笔记
  6. Spring DI如何给对象赋空值 以及 对 “” null 空值的总结
  7. php odbc 结果集处理,php常用ODBC函数集的简单示例
  8. 太原理工计算机组成原理报告,太原理工计算机组成原理考试题.pdf
  9. 常见的.net误解 1-1 字符串是不可修改的(immutable)
  10. mouse是计算机软件吗,手机控制电脑软件(EasyMouse)手机端
  11. ArcGIS中通过JPG图片文件提取矢量要素
  12. 摆脱学校WiFi的设备数限制——无线桥接
  13. CSS3的动画与变形
  14. php百分比乘加,PHP学习笔记第一篇 基础知识
  15. root卡开机画面不动了,手机root卡住不动
  16. HTML中常见的选择器 的优先级
  17. linux网络之怪现象一--接网线启动网络不通,不接网线启动再插线网络通
  18. java 获取ftp 文件路径_java在浏览器上获取FTP读文件路径
  19. c语言位置模拟,GPS模拟C语言.docx
  20. Linux的系统架构(linux由哪几部分组成?)

热门文章

  1. Log4j日志配置详解(Log4j2)
  2. 2010年全球地震统计 4月14日 更新
  3. 【C/C++】劫持技术
  4. 强制删除k8s命名空间
  5. 怎么修改图片尺寸大小?图片改大小用什么软件?
  6. 读ReactOS的准备工作
  7. [NOIP2013模拟]水叮当的舞步(暴力,IDA*)
  8. DELL服务器修改SN号流程
  9. SUNDE桌面云推动班班通工程建设步伐
  10. [paper] DuReader