写点什么

MySQL 的数据类型和存储引擎介绍

作者:C++后台开发
  • 2022-12-23
    湖南
  • 本文字数:1318 字

    阅读完需:约 4 分钟

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#对应关系

更多 C++后台开发技术点知识内容包括 C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,音视频开发,Linux 内核,TCP/IP,协程,DPDK 多个高级知识点。

C/C++Linux服务器开发高级架构师/C++后台开发架构师​免费学习地址

【文章福利】另外还整理一些C++后台开发架构师 相关学习资料,面试题,教学视频,以及学习路线图,免费分享有需要的可以点击领取

二. 存储引擎

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 存储引擎核心点

​原文链接:第五节:MySQL 的数据类型和存储引擎介绍 - Yaopengfei - 博客园

用户头像

C/C++后台开发技术交流qun:720209036 2022-05-06 加入

还未添加个人简介

评论

发布
暂无评论
MySQL的数据类型和存储引擎介绍_MySQL_C++后台开发_InfoQ写作社区