mysql数据库编程实例_mysql数据库实例

本文详细剖析了MySQL服务器的内存管理、数据加载、持久化及SQL处理流程,包括守护进程、线程结构和实例构建。重点讲解了SQL执行步骤,从连接验证到数据获取,涉及内存分配、优化和缓存策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个普通的程序运行过程:

b5c3c050c4775471c2dd102bf275349a.png

5、在处理完数据,按ctl+s保存后,关闭窗口,内存的数据会进行释放,好的程序会有一些数据的回收策略,不会永久驻在内存

MySQL数据库实例运行过程:

mysql服务器构成:

1、程序加载到内存,申请空间运行起来

2、把数据加载到内存,程序处理文件,处理完数据后把数据存到硬盘

3、内存释放,程序回收垃圾

画图来说明:

9ccb37d64b3ead524f71ee03a5fb3ba9.png

1、MySQLd守护进程的程序块先加载到内存,然后申请空间运行起来,

2、把ibd数据文件加载到内存:存放数据库和表

3、mysqld处理ibd数据

4、idb数据文件写入到磁盘,持久化

5、程序不会退出,因为程序会频繁的使用数据库,所以这里不会像office用了就关闭,

避免重复去申请内存空间,这里直接使用守护进程,一直在内存中,用就调用,不用就休息等待程序来调用

适合程序频繁调用的模式

6、实例:

mysqld 主进程不会直接参与数据的处理,会起master thread

MySQL进程线程结构

mysqld(boss)------>master thread(Manager) ---->"worker" thread

(read thread write thread)

“办公区“(提前预定好的长期的)------>预分配内存结构

MySQL启动过程:

1、启动后台守护进程,并生成工作线程

2、预分配内存结构供mysql处理数据使用

mysqld+一堆thread +预分配的内存结构=实例

mysqld服务程序构成:

3a5681e1c80674892c93ae549697546d.png

mysqld的体系结构

一条SQL语句的执行过程? select user,host ,password from mysql.user;

连接层:【与用户打交道】

1、客户端发起数据库连接。

mysql

2、连接请求到达连接层,验证用户、密码合法性。

select user,host ,password from mysql.user;

3、连接层接受用户SQL,分配一个专门用作交互的线程(connect thread);

show [full] processlist;

**

f0933bf222bff4eaa3aa45cd4b469bfb.png

连接层无法处理数据,必须交给sql层

SQL层的功能

4、连接层线程会将SQL传送SQL层继续处理

5、SQL层接受到SQL语句,语法解释器验证语法

785fc29d7139316be8751df6b47692c4.png

6、语义验证器,检测语句类型(DDL、DML、DCL、DQL),根据不同的类型交于不同对应解析器继续处理

7、解析器接受到SQL,进行解析,解析出执行计划

8、优化器会基于成本的算法,找到成本最低的执行计划【索引优化,sql优化】

9、执行器基于最优语句的执行计划进行执行,得到获取数据的方法,

会将方法TP给下一层继续处理【扇区、磁道】

10、每条sql的解析都这么复杂,所以提供查询缓存,将上一条语句的结果【语句的sqlid】。

11、记录日志(默认没有开启)

存储引擎层:

12、按照SQL提供的获取数据的方法,去对应磁盘位置获取数据即可。

13、将二进制或十六进制的数据结构化成表的形式,由连接线程返回给用户

MySQL是一个精巧的SQL数据库管理系统,虽然它不是开放源代码的产品,但在某些情况下你可以自由使用。由于它的强大功能、灵活性、丰富的应用编程接口(API)以及精巧的系统结构,受到了广大自由软件爱好者甚至是商业软件用户的青睐,特别是与Apache和PHP/PERL结合,为建立基于数据库的动态网站提供了强大动力。 MySQL有瑞典的T.c.X公司负责开发和维护,MySQL的用户手册很单纯,只有一个集中的,但其内容覆盖了MySQL的所有信息,因此该手册是了解和掌握MySQL的绝佳文献。 虽然对MySQL的开发不能出一份力,但可为它的推广使用尽一份心,面对500多页的参考手册,知道要精确译出它决非易事,但愿几个月的心血能为大家提供一丝微薄的帮助。 由于本人水平有限,文中肯定有不准确的地方,敬请在阅读过程中不吝指出。文中不明之处,请参阅手册原文。 本文的内容针对MySQL 3.23.7alpla,实际上很多内容是通用的。另外,参考手册的几个附录也是很有价值的,但由于时间有限,未能译出,可参见原文。 MySQL官方站点:http://www.mysql.com. 最新参考手册:http://www.mysql.com/doc.html 版权说明:本手册参考之原文的版权属T.c.X。而本手册可自由使用、修改、散发、转载和商业用途,但必须保留译者署名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值