MYSQL 基础架构

基础组件

MYSQL 可以分为两大部分Server层和存储引擎层两大部分组成;
Server层主要包含了,连接器,查询缓存、分析器、优化器、执行器;涵盖了MYSQL的大多数(诸如日期、时间、数学和加密函数)核心功能,所有垮存储引擎的功能都在这一层实现,比如,存储过程,触发器,视图等;
而存储引擎负责数据的存储和提取,具备可插拔式,支持InnoDB、MyISAM、Memory等多个存储引擎,从5.5版本开始,InnoDB成为了默认存储引擎;
图片标题

连接器

首先要先连接到数据库,连接器主要负责,连接管理,权限校验,连接命令如下:

mysql -h $host -P$port -u$user -p

连接命令中的mysql是客户端工具,用来和服务器建立连接,当完成经典的TCP握手后,连接器就要开始验证身份;
连接建立之后,如果没有后续的动作,连接将一直空闲,直至连接器自动断开,默认连接的有效时间是8个小时;由参数wait_timeout来控制,期间可以采用show processlist命令查看;
如果连接断开的时候客户端发起了请求,就会收到一个错误提示:Lost connection to MySQL serve…,这个时候如果需要执行,则必须重连。
为了尽量减少连接数据库带来的开销,应该尽量使用长连接,因为短连接在每次执行完后就会断开,需要重新建立。
但使用长连接也有弊端,如果连接数过多,会导致MYSQL占用内存涨得比较快,因为MYSQL在使用的过程中临时使用的内存管理是在连接对象中的,如果长连接积累下来就会导致oom;

查询缓存

MYSQL提供了查询缓存,每次查询的语句以及结果,都会以key-value的形式缓存到本地,如果命中缓存,则直接返回;
然后并不建议使用查询缓存,由于缓存所在表的任何一个更新都会导致缓存清除,查询缓存的命中率可能会比较低;
MYSQL提供了按需使用的方式,可以将query_cache_type参数修改为DEMAND,这样对于默认的SQL语句都不使用缓存,对于明确指定SQL_CACHE的语句则会查询缓存;例如:

select SQL_CACHE * from T whe...

注:MYSQL8.0的版本直接将缓存模块去除,因此8.0版本开始则彻底没有查询缓存的功能。

分析器

如果未命中缓存则会进入分析器执行,分析器主要做词法分析和语法分析;
词法分析用于解析sql语句中每个字符代表的含义,如select关键字会被识别为查询语句,T字符串会被识别为“表明T”,字符串ID会被识别为“列ID”;
语法分析则会根据词法分析的结果来判断语句是否符合MYSQL语法;

优化器

经过分析器,优化器会选择执行方案;比如,表中有多个索引,MYSQL要使用哪个索引,多表连接查询的时候又要根据什么顺序来执行;

执行器

进入了执行阶段,首先会先判断当前账号是否有表的操作权限,如果没有就返回错误;

mysql> select * from T where ID=10;
ERROR 1142 (42000): SELECT command denied to user 'b'@'localhost' for table 'T'

对于上述语句,如果没有索引,MSYQL会选取第一行进行判断,如果符合ID=10则存入结果集,否则跳过继续进入下一行,如此循环,直到表的最后一行;
对于有索引的表,执行逻辑也差不多,第一次调用的是“满足条件的第一行”,之后循环调用“满足条件的下一行”的接口;
这些接口都是存储引擎已经事先定义好的;
注意:在数据库的慢查询日志中可以看到rows_examined的字段,表示执行器执行过程中调用存储引擎获取的数据的数据行;
在某些场景下,该字段并不一定等于存储引擎实际扫描行数。

MySQL基础架构包括客户端、连接处理层、解析器、优化器和存储引擎。首先,客户端(比如jdbc和PHP)通过连接处理层连接到MySQL服务器。然后,解析器对SQL语句进行解析,将其转换为解析树。接下来,优化器对SQL语句进行优化,选择最优的执行计划。最后,优化器调用存储引擎的接口来执行SQL语句。存储引擎负责处理数据的存储和检索操作。这种架构允许MySQL在各个层次上进行优化和扩展,提供高效的数据访问和处理能力。 MySQL基础架构是游戏开发中使用MySQL的重要组成部分。在游戏开发中,通过MySQL可以实现数据的持久化存储和查询操作。首先,需要进行数据库设计,包括确定表结构和关系等。然后,通过数据查询可以获取游戏中所需的数据。同时,还需要考虑数据的安全性,比如使用合适的权限管理和加密机制来保护数据的安全性。通过掌握MySQL的基础知识和方法,可以更好地进行游戏开发和数据管理。 MySQL的起源可以追溯到1994年,由瑞典的MySQL AB公司开发。MySQL AB公司于2008年被Sun Microsystems收购,之后Sun Microsystems又被Oracle Corporation收购。MySQL是一种开源的关系型数据库管理系统,广泛应用于各种规模的应用程序和网站。MySQL具有高性能、可靠性和可扩展性,成为了最受欢迎的数据库管理系统之一。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [MySQL(一):架构体系](https://blog.csdn.net/Edwin_Hu/article/details/120910748)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [MySQL如何在游戏开发中使用](https://download.csdn.net/download/milk416666/88259896)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值