mysql优化(面试必问一)_Mysql 优化面试问题点(一)

初衷

关于面试肯定会考察的一个知识点,不要在送分题上面倒下~~~

言归正传,赶紧开始吧

复制代码

mysql优化

首先总结一下这里可能考察到的知识点,搞个list列出来,然后逐个击破~

通过慢查询日志定位慢查询sql,然后优化相关

explain 分析慢查询sql

索引问题,如何优化索引,不支持函数索引,

索引命中的问题

mysql的引擎有哪几种,myisam和innodb各自的优缺点

innodb的事务

脏读(Dirty Reads)不可重复读(Non-Repeatable Reads)幻读(Phantom Reads)

innodb的行锁详解

关于死锁

mysql雪崩

随便侃侃INNODB和MYISAM

关于mysql的引擎和索引,mysql的常用引擎无非是innodb和myisam

MyISAM

不支持行锁(MyISAM只有表锁),读取时对需要读到的所有表加锁,写入时则对表加排他锁;

不支持事务

不支持外键

不支持崩溃后的安全恢复

在表有读取查询的同时,支持往表中插入新纪录

支持BLOB和TEXT的前500个字符索引,支持全文索引

支持延迟更新索引,极大地提升了写入性能

对于不会进行修改的表,支持 压缩表 ,极大地减少了磁盘空间的占用

MyISAM性能极佳,而且提供了大量的特性,

包括全文索引、压缩、空间函数等,

但MyISAM不支持事务和行级锁,

而且最大的缺陷就是崩溃后无法安全恢复。

现在大多数时候我们使用的都是InnoDB存储引擎,但是在某些情况下使用MyISAM更好,比如:MyISAM更适合读密集的表,而InnoDB更适合写密集的的表。

复制代码INNODB

支持行锁,采用MVCC来支持高并发,有可能死锁

支持事务

支持外键

支持崩溃后的安全恢复

不支持全文索引

InnoDB的最大特色就是支持了ACID兼容的事务(Transaction)功能

复制代码

innodb和myisam对比

count运算上的区别: 因为MyISAM缓存有表meta-data(行数等),因此在做COUNT(*)时对于一个结构很好的查询是不需要消耗多少资源的。而对于InnoDB来说,则没有这种缓存。

是否支持事务和崩溃后的安全恢复: MyISAM 强调的是性能,每次查询具有原子性,其执行数度比InnoDB类型更快,但是不提供事务支持。但是InnoDB提供事务支持事务,外部键等高级数据库功能。

具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID compliant))型表。

是否支持外键: MyISAM不支持,而InnoDB支持。

MyISAM更适合读密集的表,而InnoDB更适合写密集的的表。一般来说,如果需要事务支持,并且有较高的并发读取频率(MyISAM的表锁的粒度太大,所以当该表写并发量较高时,要等待的查询就会很多了),InnoDB是不错的选择。如果你的数据量很大(MyISAM支持压缩特性可以减少磁盘的空间占用),而且不需要支持事务MyISAM是最好的选择。

复制代码

mysql的存储引擎的索引

索引

MyISAM引擎

InnoDB引擎

Memory引擎

B-Tree索引

支持

支持

支持

HASH索引

00

0

支持

R-Tree索引

支持

0

0

Full-text

支持

0

0

建立索引的原理

最左前缀原则

在提这个之前要先说下联合索引,MySQL中的索引可以以一定顺序引用多个列,这种索引叫做联合索引,一般的,一个联合索引是一个有序元组,其中各个元素均为数据表的一列。另外,单列索引可以看成联合索引元素数为1的特例。

复制代码

索引匹配的最左原则具体是说,假如索引列分别为A,B,C,顺序也是A,B,C:

- 那么查询的时候,如果查询【A】【A,B】 【A,B,C】,那么可以通过索引查询

- 如果查询的时候,采用【A,C】,那么C这个虽然是索引,但是由于中间缺失了B,因此C这个索引是用不到的,只能用到A索引

- 如果查询的时候,采用【B】 【B,C】 【C】,由于没有用到第一列索引,不是最左前缀,那么后面的索引也是用不到了

- 如果查询的时候,采用范围查询,并且是最左前缀,也就是第一列索引,那么可以用到索引,但是范围后面的列无法用到索引

复制代码特别注意,当你遇到范围索引的时候,联合索引后面的索引便会失效

慢查询

开启慢查询日志

log-slow-queries=/home/phpernote.com-slow.log

然后就是慢查询sql的explain

先这样吧~~,一口气吃不成胖子,每一个知识点都要吃透才行

路艰且长啊~~~待会去面试,上面应该够扯了,不够的话后面再查漏补缺,继续学习~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值