Mysql知识整理(二)
1、Mysql体系结构
-
Connectors:支持多种语言的客户端
-
Management Services & Utileties:系统管理和控制工具,Mysqldump,Mysql复制集群,分区管理等
-
Connection Pool:连接池,管理及缓存用户连接,username,pwd,线程处理等需要缓存的需求。
-
SQL Interface:sql接收的入口,接收用户的sql命令,并返回用户需要的结果。(相当于mvc里的controller)
-
Parser:解析器,sql命令传递到解析器这里会对sql进行校验和解析
-
Optimizer:查询优化器,sql在查询之前会使用查询优化器对查询进行优化,并确立唯一的查询计划
-
Cache & Buffer:查询缓存,如果查询中有命中缓存,查询结果可以直接到查询缓存中获取结果
-
Pluggable storage Engines:插拔式的存储引擎,存储引擎是mysql中具体的与文件交互的子系统
-
File System:文件系统,数据,日志redo,undo,binlog,索引,错误日志,查询记录,慢查询等。
2、各大存储引擎
存储引擎用于修饰表,5.5以后的版本默认为InnoDB,是插拔式,可随时卸载和加载。
2.1、CSV -
不能定义索引,列定义必须为NOT NULL,不能设置自增
-
CSV表的数据存储用“,”隔开,可直接编辑CSV文件进行数据的编排。
-
不适合用大表或者数据的在线处理
-
数据安全性低
-
适用数据的快速导入和导出,表格直接转成CSV
2.2、Archive -
压缩协议(ARZ文件格式)进行数据的存储,磁盘占用少,大概是InnoDB存储的1/20
-
支持支Insert和Select两种操作
-
只允许自增ID列创建索引
-
适用日志,大量的设备数据采集归档,只做保存不做修改的场景
2.3 Memory -
数据都是存储在内存中,处理效率高,表的默认限定为16M
-
不支持大数据存储类型如blog、text,里面的字段都是定长。
-
支持hash索引,等值查询效率高
-
字符串强制使用char 如 varchar(32)变为Char(32)
-
数据可靠性低,重启系统或者崩溃数据丢失
-
适用数据热点快速加载
-
查询结果内存中的计算,大多数都是采用这种引擎作为临时表的存储和计算,当临时表的大小小于默认16M时用这个引擎,当大于默认的16M时用MyIsam。
2.4、Myisam -
较快的数据插入和读取性能
-
较小的磁盘占用(相对于InnoDB)
-
支持表级别的锁,不支持事务
-
数据文件与索引文件分开存储(myd和myi)
-
myisam的统计count方法可以是通过额外的常量进行返回,所以select count(*)的查询效率极高。
-
适用于只读应用或者以读为主的业务。
** 2.5、InnoDB** -
支持事务
-
行级别的锁
-
聚集索引
-
数据行内容与索引结构在一个文件(IBD)
-
外键支持,保证数据的完整性
-
5.5及以后的默认存储引擎。
暂时先到这里,下次整理sql执行计划
本文地址:https://blog.csdn.net/weixin_38972374/article/details/107303105