zoukankan      html  css  js  c++  java
  • 第五节:MySQL的数据类型和存储引擎介绍

    一. MySQL数据类型

    1. 整数类型

     

    注:MySQL可以为整数类型指定宽度,比如 int(3)、int(5),这个限制不是限制value的合法范围,所以对绝大数应用没有任何意义,对于存储而言,int(3) 和 int(5) 是相同的,只是对一些MySQL的交互工具显式字符的个数有用,如mysql客户端。

    2. 浮点类型

     

    注:float和double类型会存在不够精确的问题,高精度要求建议使用decimal类型,可能会出现下图现象:

    3. 字符类型

    补充:char和varchar的区别 

    4. 日期类型

     

    5. 二进制类型

    6. 大数据类型

    7. 枚举类型和集合类型

    (1). 枚举

     Enum枚举类型是字符串类型,mysql在存储此类型数据时,直接转化成数字存储而不是字符串,可以节省空间,并且在表的.frm文件中存储“数字----字符串 ”之间的对应关系。

     Enum枚举类型最多可以有65535个值,当插入数字到枚举类型的字段时,数字会被当做枚举值的第n个值插入。

    (2). 集合

     Set集合类型是字符串类型,可以含有0个或多个值,其中每个值都需要在创建字段的适合指定到集合中。

     补充:MySQL和C#对应关系

     

     SQLServer数据类型详见:https://www.cnblogs.com/yaopengfei/p/12597379.html

    二. 存储引擎

    1. 含义

      存储引擎是 MySQL 中具体与文件打交道的子系统,它是根据 MySQL AB 公司提供的文件访问层抽象接口定制的一种文件访问机制,这种机制就叫作存储引擎,下面是一些常用的存储引擎,有远古时期的 MyISAM、支持事务的 InnoDB、内存类型的 Memory、归档类型的 Archive、列式存储的 Infobright,以及一些新兴的存储引擎,以 RocksDB 为底层基础的 MyRocks 和 RocksDB,和以分形树索引组织存储的 TokuDB。

    注:MySQL 5.6 版本之前,默认的存储引擎都是 MyISAM,但 5.7 版本及以后默认的存储引擎就是 InnoDB 了。

    2. MyISAM和InnoDB对比

    (1). 功能对比

     InnoDB 支持 ACID 的事务 4 个特性,而 MyISAM 不支持;

     InnoDB 支持 4 种事务隔离级别,默认是可重复读 Repeatable Read 的,MyISAM 不支持;

     InnoDB 支持 crash 安全恢复,MyISAM 不支持;

     InnoDB 支持外键,MyISAM 不支持;

     InnoDB 支持行级别的锁粒度,MyISAM 不支持,只支持表级别的锁粒度;

     InnoDB 支持 MVCC,MyISAM 不支持;

       InnoDB 表最大还可以支持 64TB,支持聚簇索引、支持压缩数据存储,支持数据加密,支持查询/索引/数据高速缓存,支持自适应hash索引、空间索引,支持热备份和恢复等,如下图所示。

     

    (2). 性能对比

     A. 读写混合模式下,随着 CPU 核数的增加,InnoDB 的读写能力呈线性增长。

     B. 在测试用例里,最高可达近 9000 的 TPS,但 MyISAM 因为读写不能并发,它的处理能力跟核数没关系,呈一条水平线,TPS 低于 500。

     C. 只读模式下,随着 CPU 核数的增加,InnoDB 的读写能力呈线性增长,最高可达近 14000 的 TPS,但 MyISAM 的处理能力不到 3000 TPS。

     

    3. InnoDB存储引擎核心点

     

    !

    • 作       者 : Yaopengfei(姚鹏飞)
    • 博客地址 : http://www.cnblogs.com/yaopengfei/
    • 声     明1 : 如有错误,欢迎讨论,请勿谩骂^_^。
    • 声     明2 : 原创博客请在转载时保留原文链接或在文章开头加上本人博客地址,否则保留追究法律责任的权利。
     
  • 相关阅读:
    C#资源释放方法实例分析
    c#中在一个窗体中触发另一个窗体的事件
    C#定时器的用法
    C# 类的析构函数和释放函数
    C# 定时执行,文件占用
    C#多线程与异步
    Newtonsoft中JArray 转成list<object>
    C#中Dictionary的用法
    C# 解析Json文件(使用NewtonJson库)
    mysql无法远程连接10038错误的坑(阿里云ecs)
  • 原文地址:https://www.cnblogs.com/yaopengfei/p/13983306.html
Copyright © 2011-2022 走看看