• Mysql存储引擎及选择方法


    0x00 Mysql数据库常用存储引擎

    Mysql数据库是一款开源的数据库,支持多种存储引擎的选择,比如目前最常用的存储引擎有:MyISAM,InnoDB,Memory等。

    MyISAM存储引擎

    MyISAM是Mysql的默认存储引擎,它支持B-tree/FullText/R-tree索引类型,并且MyISAM的锁级别是表锁,表锁的开销小,加锁快;锁粒度大,发生锁冲突的概率较高,并发度低;表锁适合查询。MyISAM引擎不支持事务性,也不支持外键。

    InnoDB存储引擎

    InnoDB 存储引擎最大的亮点就是支持事务性,支持回滚。它支持Hash/B-tree索引类型。InnoDB的锁级别是行锁,行锁在锁定上带来的消耗大于表锁,但 是在系统并发访问量较高时,InnoDB整体性能远高于MyISAM。InnoDB的索引不仅缓存索引本身,也缓存数据,所以InnoDB需要更大的内 存。

    Memory存储引擎

    Memory存储引擎是一个内存级的存储引擎,它将所有数据都存储在内存中,所以它能够存储的数据量是比较小的。而因为内存的特性,Memory存储引擎对于数据的一致性支持教差。Memory的锁级别和MyISAM一样,是表锁;并且不支持事务性。

    0x01 如何选择合适的存储引擎

    采用MyISAM引擎

    • R/W > 100 : 1并且Update较少 (R/W:读写比)
    • 并发不高,不需要支持事务
    • 表数据量小
    • 需要进行全文搜索

    采用InnoDB引擎

    • R/W比较小,频繁更新大字段
    • 表数据量超过千万,高并发
    • 安全性和可用性要求高

    采用Memory引擎

    • 有足够的内存
    • 对数据一致性要求不高,如session/在线人数等
    • 需要定期归档的数据

    0x02 结语

    数据库的选择,数据库存储引擎的选择,以及数据库的优化,就像是一门艺术,它没有好与坏之分,只有适合与不适合。一个项目需要考虑的因素很多,如何去权衡几个因素之间的权重,如何找到一个最优解,真的需要长时间的经验积累,数据库的学习之路漫漫,坚持,再坚持!

    原文作者:我才是二亮
    原文链接:http://2liang.github.io/2015/08/30/Mysql存储引擎及选择方法/
    转载必须在正文中标注并保留原文链接、作者等信息。

  • 相关阅读:
    luogu P2472 [SCOI2007]蜥蜴 网络流 拆点
    luogu P2762 太空飞行计划问题 网络流24
    luogu P2774 方格取数问题 网络流24 最小割
    luogu P2766 最长不下降子序列问题 网络流24
    Codeforces Round #651 (Div. 2) E
    Codeforces Round #651 (Div. 2) D
    Codeforces Round #651 (Div. 2) C
    Codeforces Global Round 8 E
    Codeforces Global Round 8 D
    【最小生成树】Truck History POJ
  • 原文地址:https://www.cnblogs.com/saltlight-wangchao/p/5799256.html
Copyright © 2020-2023  润新知