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 : 原创博客请在转载时保留原文链接或在文章开头加上本人博客地址,否则保留追究法律责任的权利。
     
  • 相关阅读:
    diary and html 文本颜色编辑,行距和其它编辑总汇
    bash coding to changeNames
    virtualbox ubuntu 网络连接 以及 连接 secureCRT
    linux 学习6 软件包安装
    linux 学习8 权限管理
    vim 使用2 转载 为了打开方便
    ubuntu
    linux 学习15 16 启动管理,备份和恢复
    linux 学习 14 日志管理
    linux 学习 13 系统管理
  • 原文地址:https://www.cnblogs.com/yaopengfei/p/13983306.html
Copyright © 2011-2022 走看看