目录
- 一、mysql架构
- 二、存储引擎
- 三、数据类型
一、mysql架构
与其它数据库相比,MySQL的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离,可以根据业务的需求和实际需要选择合适的存储引擎。
- 连接层:上层是客户端和连接服务。主要完成一些类似于连接处理、授权认证、及相关的安全方案。
- 服务层:主要完成大部分的核心服务功能, 包括查询解析、分析、优化、缓存、以及所有的内置函数,所有跨存储引擎的功能也都在这一层实现,包括触发器、存储过程、视图等。
- 引擎层:存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过API与存储引擎进行通信。
- 存储层:要是将数据存储在运行于该设备的文件系统之上,并完成与存储引擎的交互。
二、存储引擎
- 概念:存储引擎是MySQL的组件,用于处理不同表类型的SQL操作。
- 区别:不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。
- 用处:一个数据库中多个表可以使用不同引擎以满足各种性能和实际需求。
- mysql:MySQL服务器使用可插拔的存储引擎体系结构,可以从运行中的 MySQL 服务器加载或卸载存储引擎 。
- 常见引擎:InnoDB(MySQL默认)、MyISAM、Memory、NDB。
对比项 | MyISAM | InnoDB |
主外键 | 不支持 | 支持 |
事务 | 不支持 | 支持 |
行表锁 | 表锁,不适合高并发操作 | 行锁,适合高并发 |
缓存 | 缓存索引,不缓存真实数据 | 缓存索引和数据,对内存要求高,内存大小对性能有决定性影响 |
表空间 | 小 | 大 |
关注点 | 性能 | 事务 |
默认安装 | 是 | 是 |
三、数据类型
- 整数类型:BIT、BOOL、TINY INT、SMALL INT、MEDIUM INT、 INT、 BIG INT
- 浮点数类型:FLOAT、DOUBLE、DECIMAL
- 字符串类型:CHAR、VARCHAR、TINY TEXT、TEXT、MEDIUM TEXT、LONGTEXT、TINY BLOB、BLOB、MEDIUM BLOB、LONG BLOB
- 日期类型:Date、DateTime、TimeStamp、Time、Year
- 其他数据类型:BINARY、VARBINARY、ENUM、SET、Geometry、Point、MultiPoint、LineString、MultiLineString、Polygon、GeometryCollection等
CHAR 和 VARCHAR 的区别?
- char是固定长度,varchar长度可变
- char不论实际存储的字符数都会占用n个字符的空间
- 而varchar只会占用实际字符应该占用的字节空间加1(实际长度length,0<=length<255)或加2(length>255).因为varchar保存数据时除了要保存字符串之外还会加一个字节来记录长度(如果列声明长度大于255则使用两个字节来保存长度)。
- 存储时,varchar回根据实际存储的数据分配最终的存储空间
- char(n),varchar(n)中的n都代表字符的个数
- 超过char,varchar最大长度n的限制后,字符串会被截断。
- 存储的最大空间限制不一样:char的存储上限为255字节。
- char在存储时会截断尾部的空格,而varchar不会。
- char是适合存储很短的、一般固定长度的字符串
列的字符串类型可以是什么?
字符串类型是:SET、BLOB、ENUM、CHAR、TEXT、VARCHAR
BLOB和TEXT有什么区别?
- BLOB是一个二进制对象,可以容纳可变数量的数据。有四种类型的BLOB:TINYBLOB、BLOB、MEDIUMBLO和 LONGBLOB
- TEXT是一个不区分大小写的BLOB。四种TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。
- BLOB 保存二进制数据,TEXT 保存字符数据。