美文网首页
再次认识MySql(一)

再次认识MySql(一)

作者: ZalleDay | 来源:发表于2019-04-10 17:56 被阅读0次

    mysql有两个常见的的存储引擎: Mylsam 和innoDB

    1 Mylsan

    MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的 ISAM (Indexed Sequential Access Method:有索引的顺序访问方法)所改良。虽然性能极佳,而且提供了大量的特性,包括全文索引、压缩、空间函数等,但MyISAM不支持事务和行级锁,而且

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

    不过,5.5版本之后,MySQL引入了InnoDB(另一种数据库引擎)。
    下面这张图只是想表达的意思是现在大多数时候我们使用的都是InnoDB存储引擎,但是在某些情况下使用MyISAM更好,比如:

    MyISAM更适合读密集的表,而InnoDB更适合写密集的的表。
    

    在数据库做主从分离的情况下,经常选择MyISAM作为主库的存储引擎。

    Mylsam的特点

    • 不支持行锁(MyISAM只有表锁),读取时对需要读到的所有表加锁,写入时则对表加排他锁;
    • 不支持事务
    • 不支持外键
    • 不支持崩溃后的安全恢复
    • 在表有读取查询的同时,支持往表中插入新纪录
    • 支持BLOB和TEXT的前500个字符索引,支持全文索引
    • 支持延迟更新索引,极大地提升了写入性能
    • 对于不会进行修改的表,支持压缩表 ,极大地减少了磁盘空间的占用

    2 InnoDB

    2.1 InnoDB简介

    InnoDB是MySQL的默认数据库引擎(5.5版之后),2006年五月时由甲骨文公司并购。与传统的ISAM与MyISAM相比,InnoDB的最大特色就是支持了ACID兼容的事务(Transaction)功能。

    2.2 InnoDB特点

    • 支持行锁,采用MVCC来支持高并发,有可能死锁
    • 支持事务
    • 支持外键
    • 支持崩溃后的安全恢复
    • 不支持全文索引

    补充的概念:
    Mysql的行锁和表锁( 锁是计算机协调多个进程或纯线程并发访问某一资源的机制)

    • 表级锁: 每次操作锁住整张表。开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低;
    • 行级锁: 每次操作锁住一行数据。开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高;

    参考转载出处:
    Java Guide
    https://juejin.im/post/5b1685bef265da6e5c3c1c34

    相关文章

      网友评论

          本文标题:再次认识MySql(一)

          本文链接:https://www.haomeiwen.com/subject/hgwiiqtx.html