zoukankan      html  css  js  c++  java
  • MySQL存储引擎总结

    在数据库中存的就是一张张有着千丝万缕关系的表,所以表设计的好坏,将直接影响整个数据库。而在设计表的时候,我们都会关注一个问题,使用什么存储引擎。

    什么是存储引擎?

    关系数据库是用于存储和组织信息的数据结构,可以将表理解为由行和列组成的表格,类似于excel的电子表格的形式。有的表简单,有的表复杂,有的表根本不用来存储任何长期的数据,有的表读取时非常快,但是插入数据时却很差。而我们在实际开发过程中,就可能需要各种的表,不同的表,就意味着存储不同类型的数据,数据处理上也会存在着差异。对于mysql来说,它提供了很多类型的存储引擎,我们可以根据数据处理的需求,选择不同的存储引擎,从而最大限度的利用Mysql强大的功能。

    特点

    Myisam

    BDB

    Memory

    InnoDB

    Archive

    存储限制

    没有

    没有

    64TB

    没有

    事务安全

     

    支持

     

    支持

     

    锁机制

    表锁

    页锁

    表锁

    行锁

    行锁

    B树索引

    支持

    支持

    支持

    支持

     

    哈希索引

     

     

    支持

    支持

     

    全文索引

    支持

     

     

     

     

    集群索引

     

     

     

    支持

     

    数据缓存

     

     

    支持

    支持

     

    索引缓存

    支持

     

    支持

    支持

     

    数据可压缩

    支持

     

     

     

    支持

    空间使用

    N/A

    非常低

    内存使用

    中等

    批量插入的速度

    非常高

    支持外键

     

     

     

    支持

     

    在mysql客户端中,使用以下命令可以查看Mysql支持的引擎。

    SHOW ENGINES ;

    MyISAM:当我们建立一个MyISAM引擎的表时,就会在本地磁盘上建立三个文件,文件名就是表名。例如,我建立一个MyISAM引擎的tb_Demo表,那么就会生成以下三个文件:

    1、tb_Demo.frm,存储表定义

    2、tb_Demo.MYD,存储数据

    3、Tb_Demo.MYI,存储索引

     

    MyISAM表无法处理事务,这就意味着有事务处理需求的表,不能使用MyISAM存储引擎。

     

    MyISAM存储引擎特别适合在以下几种情况下使用:

    1、选择密集型的表:MyIASM存储引擎在筛选大量数据时非常迅速,这是它最突出的有点。

    2、插入密集型的表:MyISAM的并发插入特性允许同时选择和插入数据。例如:MyISAM存储引擎很适合管理右键或web服务器日志数据。

     

    InnoDB是一个健壮的事务型存储引擎,这种存储引擎已经被很多互联网公司使用,为用户操作非常大的数据提供了一个强大的解决方案。我的电脑上安装的MySQL5.6.17版,InnoDB就是作为默认的存储引擎。InnoDB还引入了行级锁定和外键约束,在以下场合下,使用InnoDB是最理想的选择:

    1、更新密集型的表:InnoDB存储引擎特别适合处理多重并发的更新请求

    2、事务:InnoDB存储引擎是支持事务的标准MySQL存储引擎

    3、自动灾难恢复:与其他存储引擎不同,InnoDB表能够自动从灾难中恢复

    4、外键约束:MySQL支持外键的存储引擎只有InnoDB

    5、支持自动更加列AUTO_INCREMENT属性

    一般来说,如果需要事务支持,丙炔有较高的并发读取频率,InnoDB是不错的选择。

  • 相关阅读:
    排序算法之希尔排序
    排序算法之插入排序(直接插入方式)
    排序算法之选择排序
    冒泡排序算法之优化
    排序算法之冒泡排序
    逻辑运算符:与,或,非,异或
    兔子个数问题(斐波那契数列)
    代理模式
    java.lang.ClassCastException: xut.bookshop.entity.User_$$_javassist_3 cannot be cast to javassist.util.proxy.Proxy
    org.xml.sax.SAXParseException; lineNumber: 14; columnNumber: 32; 元素类型为 "key" 的内容必须匹配 "(column)*"
  • 原文地址:https://www.cnblogs.com/zhouguowei/p/5241435.html
Copyright © 2011-2022 走看看