最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

MySQL的内部组件结构图

XAMPP相关 admin 15浏览 0评论

dqz73linux

MySQL的内部组件结构

Server层

主要包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。

连接器

mysql有非常多种类的客户端:navicat,mysql front,jdbc,SQLyog等非常丰富的客户端,这些客户端要向mysql发起通信都必须先跟Server端建立通信连接,而建立连接的工作就是由连接器完成的。连接器负责跟客户端建立连接、获取权限、维持和管理连接。一个用户成功建立连接后,即使你用管理员账号对这个用户的权限做了修改,也不会影响已经存在连接的权限。修改完成后,只有再新建的连接才会使用新的权限设置。用户的权限表在系统表空间的mysql的user表中。连接到这个数据库上,这时候接待你的就是连接器。如果用户名或密码不对,你就会收到一个”Access denied for user”的错误,然后客户端程序结束执行。如果用户名密码认证通过,连接器会到权限表里面查出你拥有的权限。之后,这个连接里面的权限判断逻辑,都将依赖于此时读到的权限。连接完成后,如果你没有后续的动作,这个连接就处于空闲状态,通过:show processlist 命令进行查看。客户端如果长时间不发送command到Server端,连接器就会自动将它断开。这个时间是由参数 wait_timeout 控制的,默认值是 8 小时。涉及到的命令命令:

-- 连接数据可以
mysql -h host[数据库地址] -u root[用户] -p root[密码] -P 3306-- 创建新用户
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
-- 赋权限,%表示所有(host)
grant all privileges on *.* to 'username'@'%'-- 刷新数据库
flush privileges;
-- 设置用户名密码
update user set password=password(”123456″) where user=’root’;
-- 查看当前用户的权限
mysql> show grants for root@"%";
-- 查看连接的状态
show processlist;
-- 关闭连接
 kill <id>;

查询缓存

大多数情况查询缓存就是个鸡肋!mysql8.0已经移除了查询缓存功能!查询缓存往往弊大于利。查询缓存的失效非常频繁,只要有对一个表的更新,这个表上所有的查询缓存都会被清空一般建议大家在静态表里使用查询缓存。如配置表、字典表….设置查询缓存方式# 找到mysql的配置文件:my.cnf
# query_cache_type有3个值 0代表关闭查询缓存OFF,1代表开启ON,2(DEMAND)代表当sql语句中有SQL_CACHE关键词时才缓存
query_cache_type=2
查询缓存的常用命令

-- 查看当前mysql实例是否开启缓存机制
show global variables like "%query_cache_type%";
-- 监控查询缓存的命中率:
mysql> show status like'%Qcache%'
dqz073linux
缓存信息

段落引用 Qcache_free_blocks:表示查询缓存中目前还有多少剩余的blocks,如果该值显示较大,则说明查询缓存中的内存碎片过多了,可能在一定的时间进行整理。Qcache_free_memory:查询缓存的内存大小,通过这个参数可以很清晰的知道当前系统的查询内存是否够用,是多了,还是不够用,DBA可以根据实际情况做出调整。Qcache_hits:表示有多少次命中缓存。我们主要可以通过该值来验证我们的查询缓存的效果。数字越大,缓存效果越理想。Qcache_inserts: 表示多少次未命中然后插入,意思是新来的SQL请求在缓存中未找到,不得不执行查询处理,执行查询处理后把结果insert到查询缓存中。这样的情况的次数,次数越多,表示查询缓存应用到的比较少,效果也就不理想。当然系统刚启动后,查询缓存是空的,这很正常。Qcache_lowmem_prunes:该参数记录有多少条查询因为内存不足而被移除出查询缓存。通过这个值,用户可以适当的调整缓存大小。Qcache_not_cached: 表示因为query_cache_type的设置而没有被缓存的查询数量。Qcache_queries_in_cache:当前缓存中缓存的查询数量。Qcache_total_blocks:当前缓存的block数量。

分析器(java中类似的功能:Antlr4)

词法分析语法分析语义分析构造执行树生成执行计划计划的执行

优化器

优化器是在表里面有多个索引的时候,决定使用哪个索引;在一个语句有多表关联(join)的时候,决定各个表的连接顺序。

执行器

开始执行的时候,要先判断一下你对这个表 T 有没有执行查询的权限,如果没有,就会返回没有权限的错误如果有权限,就打开表继续执行。

Store(存储引擎)层

存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。现在最常用的存储引擎是 InnoDB,它从 MySQL 5.5.5 版本开始成为了默认存储引擎(创建表的时候)。

转载请注明:XAMPP中文组官网 » MySQL的内部组件结构图