按在地上摩擦面试官之mysql初识(精讲)

原文地址

简介:

我刚上大学的时候就学数据库了,那时候还是sqlserver和db2,等我参加工作的时候接触了mysql,那时候只知道mysql存储,具体怎么存储以及对其内部了解很少,本篇主要是对于mysql的常用存储引擎来进行深度讲解。

面试点:你知道mysql有哪些存储引擎?

▪InnoDB:MySQL5.5.8之后默认的事务型引擎。InnoDB的性能与自动崩溃恢复的特性,使得它在非事务存储需求中也很流行。除非有非常特别的原因需要使用其他的存储引擎,否则应该优先考虑InnoDB引擎。

 

▪MyISAM:在MySQL 5.1 及之前的版本,MyISAM是默认引擎。MyISAM提供的大量的特性,包括全文索引、压缩等,但MyISAM并不支持事务,缺陷是崩溃后无法安全恢复。尽管这样,它并不是一无是处的。对于只读的数据,或者表比较小,可以忍受修复操作,则依然可以使用MyISAM。

 

▪NDB:是一个集群存储引擎,特点是将数据全部放在内存中(5.1之后可以放到磁盘上),因此查找速度快,高可用,高性能。

 面试点:那你说说mysql存储引擎的差异?

▪事务:数据库系统与文件系统最大的区别就是事务

InnoDB支持事务主要是面向OLTP应用。

 

MyISAM不支持事务,并不是所有的系统都需要支持事务,比如在数仓中,如果只是简单报表查询。

 

 

▪ 锁的粒度:

InnoDB支持行锁

MyISAM支持表锁

▪ 存储结构:

InnoDB将数据放到一个独立的idb文件,对于表中的数据,采用了聚集的方式,因此每张表的存储都是按主键的顺序进行存放。索引和数据同时放到缓存中。通过预读的方式将页数据放到缓冲池(后面深入讲解缓冲池)

 

MyISAM存储引擎表是由MYD(数据)和MYI(索引)组成,MySIAM在内存中只存放索引,数据还是在磁盘上的。

▪  表的具体行数:

InnoDB不保存具体的行数,select count(*) from t 是,需要全表扫描

 

MyISAM会记录表的数据的总数,如果带where条件就和  InnoDB一样 

▪  其它:

InnoDB支持MVCC、支持外键、提供一致性非锁定读,同时设计成最有效的利用cpu和内存。

▪  InnoDB关键特性:

插入缓冲(Insert Buffer)

两次写 (Double Write)

自适应哈希索引(Adaptive Hash Index)

异步IO (Async IO)

刷新邻接页(Flush Neighbor Page)

大家好,我是山虎,喜欢数学,编码,算法,股票,AI。经历过一次失败的创业。东西不要死记硬背,要做到自己真正的理解。年轻人就要折腾,年轻人就要折腾,年轻人就要折腾。原创不易,帮忙转发。

下一篇:   按在地上摩擦面试官之mysql特性(精讲)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值