常规程序执行过程:
5、处理数据,按ctl s保存后关闭窗口,即可释放内存中的数据。 好的程序有数据回收策略,不会永久驻留在内存中
要运行MySQL数据库实例,请执行以下操作:
mysql服务器配置:
1、程序加载内存,申请空间运行
2、将数据加载到内存中,程序处理文件,处理数据后,将数据存储在硬盘上
3、内存释放,程序回收垃圾
画画说明:
1、将MySQLd守护进程的程序块先加载到内存中,然后申请可用空间执行,
2、将ibd数据文件加载到内存中:保存数据库和表
3、mysqld处理ibd数据
4、将idb数据文件写入磁盘并永久化
5、程序不退出。 因为程序经常使用数据库,所以在这里,如果office使用了它,就不会关闭它
请避免重复申请内存区域。 这里直接使用守护程序,一直在内存中。 使用则调用,不使用则休息等待程序被调用
适合程序频繁调用的模式
6、实例:
mysqld主进程不直接参与数据处理,而是主线程
MySQL进程的线程结构
mysqld---- masterthread---manager---- ' worker ' thread
(读取读写线程)
“办公室区域()提前保留的长期)------提前分配内存的机制
MySQL启动过程:
1 .启动后台守护程序并生成工作线程
2、mysql预先分配内存结构以处理数据
mysqld许多thread预先分配的内存结构=实例
mysqld服务程序配置:
mysqld体系结构
一个SQL语句的执行过程? select user,host,password from mysql.user;
连接层【与用户的交互】
1、客户端开始数据库连接。
mysql
2、连接请求到达连接层,验证用户、密码的合法性。
select user,host,password from mysql.user;
3、连接层接受用户的SQL,分配交互专用线程;
show [全]流程列表;
**
连接层无法处理数据。 必须传递给sql层
SQL层功能
4、连接层线程继续处理SQL传输SQL层
5、SQL层接受SQL语句,语法解释器验证语法
6、语义验证器检测语句类型(DDL、DML、DCL、DQL ),根据类型传递给相应的解析器继续处理
7、解析器接收SQL,进行解析,解析执行计划
8、优化器根据成本算法找到成本最低的执行计划【索引优化、sql优化】
9 .执行机构根据最佳语句执行计划执行和获取数据的方法、
方法将TP传递到下一层继续处理【扇区、轨道】
10、各sql的分析如此复杂,提供查询缓存,使前一句的结果为【句的sqlid】。
11、记录日志(默认情况下未打开) )。
存储引擎分层结构:
12、根据SQL提供的数据获取方法,在对应的盘位置获取数据即可。
13 .将二进制或十六进制数据结构化为表的形式,并通过连接线程返回给用户