• 描述一下innodb


    1mysql为了支持oltp(交易)系统而设计的一个引擎,目前是mysql的默认引擎

    2、支持事务,这是oltp最基本的要求,事务支持ACID、原子性、一致性、持久性、隔离性

    3、支持行锁,大大提升MySQL的并发性能,但是在资源消耗方面,但并未过多占用内存,只有发生事务锁冲突的时候才会占用内存

    4、通过undo实现写不阻塞读,进一步提升并发性能

    5、支持事务的四种隔离级别,默认的隔离级别是可重复读,在业务允许的情况下,可以把可重复读改成已提交读

    6、支持redo保护内存数据;有了redo以后可以实现快速提交、脏缓冲区 | 脏写(写缓存)、崩溃恢复

    7change buffer,提升了对于dml因为二级索引导致的低下问题,二级索引要注意数量

    8 double write,解决了写入时数据损坏的问题,但是也放大了写入的压力,如果是从库,可以关闭double write

    9、自适应hash索引,对系统的性能整体上提升不是很明显,因为通过索引访问数据最大的资源消耗是回表的成本,但是自适应 hash 是解决了树高部分的资源消耗,并且只支持=的访问,所以效果不是很明显。

    10、异步IO,OS默认支持异步IO,数据库支持异步IO,总体上IO都实现了异步,大大提升了IOcpu的消耗

    11、刷新邻接页,加速脏页的回写,但是也放大了写压力

    12、支持MVCCMVCC通过undo技术来实现,在一个事务中,所有select访问到的是同一个时刻的数据(select一致性读)通过MVCC来实现事务对于select实现了可重复读,但是如果出现长事务、大事务,MVCC会导致undo暴涨。

    13、支持外键,注意外键有陷阱,很多高并发系统里禁用外键。

    14、通过gap锁,提供DML可重复读,避免幻影读。

    15、支持大的共享内存和多核CPU,例如innodb buffer pool以及多线程,有利于降低物理读,提升SQL执行性能。

  • 相关阅读:
    bzoj3576 [Hnoi2014]江南乐
    codeforces 438D The Child and Sequence
    bzoj1926 [Sdoi2010]粟粟的书架
    bzoj1185 [HNOI2007]最小矩形覆盖
    bzoj1069 [SCOI2007]最大土地面积
    bzoj4569 [Scoi2016]萌萌哒
    西西爆难积分
    概率问题-距离的期望
    各类平均与数列极限
    三角恒等式
  • 原文地址:https://www.cnblogs.com/5945yang/p/11259145.html
Copyright © 2020-2023  润新知